Saturday, March 2, 2013

Установка и настройка openvpn на виртуалку (OpenVZ)


На родительском хосте виртуалки делаем следующее:
VEID меняем на ID виртуалки!!

vzctl set VEID --devices c:10:200:rw --save 
vzctl set VEID --capability net_admin:on --save 
vzctl exec VEID mkdir -p /dev/net 
vzctl exec VEID mknod /dev/net/tun c 10 200 
vzctl exec VEID chmod 600 /dev/net/tun
vzctl set VEID --iptables "p_tables ip_conntrack iptable_nat iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ipt_MASQUERADE" --save

vzctl restart VEID

На самой виртуалке (где будет стоять OpenVPN сервер) делаем:

apt-get install openvpn 
openvpn --genkey --secret /etc/openvpn/openvpn-key.txt


Правим файл /etc/openvpn/openvpn.conf

port 1194 
proto udp 
dev tun 
secret openvpn-key.txt 
ifconfig 10.0.2.1 10.0.2.2 
keepalive 10 120 
comp-lzo 
persist-key 
persist-tun 
status server-tcp.log 
verb 3 


Правим /etc/sysconfig/iptables

nat
:POSTROUTING ACCEPT [0:0] 
:PREROUTING ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A POSTROUTING -s 192.168.2.0/24 -d 0.0.0.0/0 -o eth0 -j MASQUERADE 
COMMIT


На убунте iptables -t nat -A POSTROUTING -s 192.168.2.1/2 -o eth0 -j MASQUERADE

В файл /etc/sysctl.conf добавить строчку
net.ipv4.ip_forward=1
а потом применяем командой
sysctl -p

Перезапускаем и прописывам сервисы

service iptables restart 
chkconfig iptables on
service openvpn start 
chkconfig openvpn on 


На клиентской машине (где будет работать OpenVPN клиент)

apt-get install openvpn

копируем с сервака файл /etc/openvpn/openvpn-key.txt и помещаем тудаже на клиентской машине

Правим файл /etc/openvpn/openvpn.conf

dev tun 
proto udp 
remote ТУТ_ПИШЕМ_АДРЕС_ВИРТУАЛКИ_ГДЕ_СТОИТ_СЕРВЕР 1194 
resolv-retry infinite 
nobind 
secret openvpn-key.txt 
ifconfig 10.0.2.2 10.0.2.1 
comp-lzo 
verb 3 
dhcp-option DNS 95.66.188.11 
redirect-gateway def1 
run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh 


Добавляем содержимое /etc/openvpn/up.sh на стороне клиента

#!/bin/sh
route add default gw 10.0.2.1 tun0 

после чего


/etc/init.d/openvpn start 

тестируем!



добавить роут в винде 
route add 0.0.0.0 mask 0.0.0.0 w.x.y.z

Thursday, February 17, 2011

Лучшие систем мониторинга Linux машин

В данной статье будет рассмотрен список лучших инструментов для мониторинга производительности Linux машин. Большинство дистрибьюторов укомплектованы большим количеством таких инструментов. Вы можете использовать их для выявления возможных проблем с производительностью. Итак начнем наш обзор:

#1: top - список системных процессов и информации о них

top — консольная команда, которая выводит список работающих в системе процессов и информации о них. По умолчанию она в реальном времени сортирует их по нагрузке на процессор (обновляя список каждые 5 секунд).
Top_program
Полезные интерактивные команды при работе с top
[Пробел] Немедленно обновить содержимое экрана.
[h] Вывести справку о программе.
[t] Отобразить/скрыть общую информацию.
[m] Отобразить/скрыть информацию о памяти.
[k] Уничтожить процесс. Программа запрашивает у вас код процесса и сигнал, который будет ему послан.
[M] Сортировать по объёму используемой памяти.
[P] Сортировать по загрузке процессора.
[z] Цветное/монохромное отображение.

#2: vmstat – активность процессора и схем прерывания

Команда vmstat выдает некоторую статистику, хранимую системой в процессах, страницы по требованию и активность процессора и схем прерывания.
# vmstat 3
Пример вывода:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
2  1 130400  54304  34572 202100    0    0    31     4   39   18  3  3 89  5
1  0 130400  54056  34668 202288    0    0    56   117  195  133  3  1 94  2
1  0 130400  54056  34668 202328    0    0    13     0  199  127  3  0 97  0
1  0 130400  52940  34672 203416    0    0   364     0  198  135  3  0 94  3
1  0 130400  52832  34700 203436    0    0     8   141  214  127  3  1 96  1
0  0 130400  52584  34704 203668    0    0    79     0  201  124  3  0 96  1
0  0 130400  51840  34704 204484    0    0   269     0  181  139  4  1 95  0

 

#3: w – отображает пользователей, находящихся в системе и то, что они делают

Команда 'w' печатает суммарную информацию об активности системы, включая данные о том, что делает каждый пользователь.
Пример вывода:
19:22:41 up 4 days, 18:06,  1 user,  load average: 0,07, 0,08, 0,08
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/4    192.168.0.7      19:04    0.00s  0.33s  0.01s w

 

#4: uptime – выдает текущий аптайм системы (время сколько она работает)

Утилита uptime показывает текущее время, время, которое проработала система, число пользователей в системе и среднюю загруженность системы за последние 1, 5, и 15 минут.
Пример вывода:
19:25:23 up 4 days, 18:09,  1 user,  load average: 0.06, 0.07, 0.07

 

#5: ps - выдача информации о состоянии процессов

Команда ps выдает информацию об активных процессах. Для того чтобы отобразить все процессы – используем ключ –A или –e
# ps -A
Пример вывода:
  PID TTY          TIME CMD
    1 ?        00:00:01 init
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 migration/0
    4 ?        00:00:01 ksoftirqd/0
    5 ?        00:00:00 watchdog/0
    6 ?        00:00:00 events/0
    7 ?        00:00:00 cpuset
    8 ?        00:00:00 khelper
    9 ?        00:00:00 netns
   10 ?        00:00:00 async/mgr
   11 ?        00:00:00 kintegrityd/0
   12 ?        00:00:05 kblockd/0
   13 ?        00:00:00 kacpid
   14 ?        00:00:00 kacpi_notify
   15 ?        00:00:00 kacpi_hotplug
   16 ?        00:00:00 ata/0
   17 ?        00:00:00 ata_aux
   18 ?        00:00:00 ksuspend_usbd
   19 ?        00:00:00 khubd
   20 ?        00:00:00 kseriod
   21 ?        00:00:00 kmmcd
   22 ?        00:00:00 bluetooth
   23 ?        00:00:00 khungtaskd
   24 ?        00:00:02 pdflush
   26 ?        00:01:56 kswapd0
….
…..
24829 ?        00:00:01 apache2
24830 ?        00:00:01 apache2
24831 ?        00:00:01 apache2
26377 ?        00:00:11 smbd
26601 ?        00:00:00 apache2
26611 ?        00:00:00 pickup
26756 ?        00:00:00 smbd
26770 ?        00:00:00 smbd
26798 ?        00:00:00 sshd
26869 pts/4    00:00:00 zsh
26904 pts/4    00:00:00 vmstat
26907 pts/4    00:00:00 vmstat
26946 pts/4    00:00:00 ps
Командой ps обрабатываются следующие опции:
-e
Вывести информацию обо всех процессах.
-d
Вывести информацию обо всех процессах, кроме лидеров групп.
-a Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f
Генерировать полный листинг (см. ниже раз яснение смысла колонок).
-l
Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов
Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал - это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f - в символьном.
-g список_идентификаторов_лидеров_групп Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы - это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы.

#6: free – использование памяти

Команда free служит для отображения общего количества свободной и использованной физической и swap памяти.
Пример вывода:
             total       used       free     shared    buffers     cached
Mem:        508972     502972       6000          0      39620     244656
-/+ buffers/cache:     218696     290276
Swap:      1510068     130296    1379772

 

#7: iostat – средняя нагружка на ЦП, дисковая активность

Команда iostat выводит статистику по I/O устройствам
iostat -d – вывод статистики только для устройств (в основном жёсткие диски)
iostat -dx – вывод расширенной статистики для устройств
Пример вывода:
Linux 2.6.28-128.1.14.el5    06/26/2010
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.60    0.09    0.51    0.03    0.00   95.86
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              22.04        31.88       512.03   16193351  260102868
sda1              0.00         0.00         0.00       2166        180
sda2             22.04        31.97       512.03   16189010  260102688
sda3              0.00         0.00         0.00       1615          0

 

#8: sar - информация о функционировании системы

Есть два способа использования команды sar. При первом способе sar опрашивает и накапливает счетчики активности операционной системы на заданном числе интервалов, каждый из которых длится заданное число секунд. По умолчанию число интервалов равно 1. Устанавливается этот режим по умолчанию, управляет им процесс /etc/cron , интерпретируя справочные таблицы, лежащие в файле /usr/spool/cron/crontabs/sys. При втором способе (если не указан интервал опроса) sar выбирает данные из файла, куда они предварительно должны быть записаны. Этот файл либо указывается явно опцией -f, либо, по умолчанию
Пример:
В параллельном режиме 10 минут измерять загрузку ЦП, сохранив результаты в файле temp:
#  sar -o temp 60 10   &
Взять данные из файла temp:
# sar -A   -f temp    | pg

 

#9: mpstat - использование мультипроцессора

На многопроцессорных компьютерах mpstat позволяет получить статистику использования процессоров по отдельности, благодаря чему можно определить, насколько эффективно используется каждый процессор.
# mpstat -P ALL
Пример вывода:
Linux 2.6.31-22-generic-pae (serv.lan)  17.02.2011      _i686_  (1 CPU)
19:55:15     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
19:55:15     all    2,60    0,00    1,61    4,93    0,27    1,18    0,00    0,00   89,41
19:55:15       0    2,60    0,00    1,61    4,93    0,27    1,18    0,00    0,00   89,41

 

#10: pmap - использование процессами оперативной памяти

Команда pmap выдает данные о распределении памяти между процессами.
Пример использования:
root@serv ~ # ps -A | grep trans
2277 ?        03:56:26 transmission-da
root@serv ~ # pmap -d 2277
2277:   /usr/bin/transmission-daemon --config-dir /var/lib/transmission-daemon/info --allowed 192.168.0.* --peerport 51000 --auth --username myuser --password mypassword --watch-dir /megabig/transmission/torrents/ --download-dir /megabig/transmission/storage/
Address   Kbytes Mode  Offset           Device    Mapping
00110000    1204 r-x-- 0000000000000000 008:00001 libcrypto.so.0.9.8
0023d000      32 r---- 000000000012c000 008:00001 libcrypto.so.0.9.8
00245000      52 rw--- 0000000000134000 008:00001 libcrypto.so.0.9.8
00252000      16 rw--- 0000000000000000 000:00000   [ anon ]
00256000      64 r-x-- 0000000000000000 008:00001 libresolv-2.10.1.so
00266000       4 r---- 0000000000010000 008:00001 libresolv-2.10.1.so
00267000       4 rw--- 0000000000011000 008:00001 libresolv-2.10.1.so
00268000       8 rw--- 0000000000000000 000:00000   [ anon ]
0026a000       8 r-x-- 0000000000000000 008:00001 libdl-2.10.1.so
0026c000       4 r---- 0000000000001000 008:00001 libdl-2.10.1.so
0026d000       4 rw--- 0000000000002000 008:00001 libdl-2.10.1.so
0026e000      96 r-x-- 0000000000000000 008:00001 libsasl2.so.2.0.23
00286000       4 r---- 0000000000017000 008:00001 libsasl2.so.2.0.23
00287000       4 rw--- 0000000000018000 008:00001 libsasl2.so.2.0.23
00288000       8 r-x-- 0000000000000000 008:00001 libcom_err.so.2.1

…..
b6201000     328 rw--- 0000000000000000 000:00000   [ anon ]
b63bd000       4 ----- 0000000000000000 000:00000   [ anon ]
b63be000   10240 rw--- 0000000000000000 000:00000   [ anon ]
b6dbe000       4 ----- 0000000000000000 000:00000   [ anon ]
b6dbf000   10268 rw--- 0000000000000000 000:00000   [ anon ]
b77d0000      12 rw--- 0000000000000000 000:00000   [ anon ]
bf811000      84 rw--- 0000000000000000 000:00000   [ stack ]
mapped: 253228K    writeable/private: 245360K    shared: 0K
Последняя строка обозначает следующее:
mapped – общее количество памяти, отведенное под файл
writeable/private - общее количество приватного адресного пространства
shared - общее количество адресного пространства, которое данный процесс использует совместно другими процессами

#11: netstat- Сетевая статистика

Команда netstat показывает содержимое различных структур данных, связанных с сетью, в различных форматах в зависимости от указанных опций.
Получить список всех уникальных IP адресов:
# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq
Получить общее количество уникальных IP адресов:
# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc –l
Выясняем дидосят ли наш сервер
# netstat -atun | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort –n
Отображение суммарной информации для каждого протокола
# netstat -s | less
# netstat -t -s | less
# netstat -u -s | less
# netstat -w -s | less
# netstat –s
Выясняем что за приложение висит на определенных портах
netstat –tulpn

 

#12: ss - Сетевая статистика

Команда ss используется для захвата статистики сетевых сокетов. Она отображает информацию, сходную с выводом команды netstat.
Отобразим список всех установленных, закрытых или ожидающих TCP сокетов:
# ss –s
Выводим все открытые сетевые порты:
# ss –l
Для просмотра какой процесс использует открытый сокет используйте команду:
# ss –pl
Вывести все TCP сокеты
# ss -t –a
Вывести все UDP сокеты
# ss -u –a
Вывести все установленные HTTP подключения
# ss -o state established '( dport = :http or sport = :http )'

 

#13: iptraf – Сетевая статистика в реальном времени

IPTraf программа для просмотра статистики по соединениям и интерфейсам. Переход по меню осуществляется клавишами со стрелками. Большую часть времени все доступные опции и закрепленные за ними клавиши отображаются в нижней строке экрана.
iptraf

#14: tcpdump – Детальный анализ сетевого трафика

Программа tcpdump служит для снятия дампов сетевого трафика.
Выводим траффик DNS запросов:
tcpdump -i eth0 'udp port 53'

 

#15: strace – системные вызовы

Позволяет записывает на стандартный вывод все трассировочные сообщения псевдоустройств от всех драйверов и модулей.
К примеру данная команда отобразит все системные вызовы процесса strace и запишет их в выходной файл:
$ strace -o output.txt /bin/foo
Будучи запущенной, программа strace выполняется до тех пор, пока ее не пррвет пользователь.
Выводить все трассировочные сообщения от драйвера с идентификатором 41:
$ strace 41 all all

 

#16: /Proc файловая система – различная статистика ядра

Файловая система /proc позволяет получить детальную информацию о различном железе и прочей информации ядра.
Примеры:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts

Мониторинг новых файлов на сервере

Очень удобно иметь систему мониторинга появления новых файлов на общественном файловом сервере. Это избавляет нас от сортировки и поиска новых файлов по дате.
Сама система будет состоять из двух частей: сканирующей и выводящей.
Сканирующая часть:

Выводящая часть также состоит из PHP скрипта, который уже обрабатывается при запросе пользователей. Кладем его в папку веб сервераВышеописанный скрипт производит поиск добавленных за последние сутки файлов на сервере и добавляет их в базу данных. Скрипт мы помещаем в таблицу cron, чтоб он выполнялся к примеру каждый день в 12 ночи.


Тем самым мы можем посмотреть, что добавилось на сервер за последний месяц по дням. Это удобно как для пользователей этого файлового сервера, так и для администратора.

Wednesday, February 16, 2011

Общественный файловый сервер для LAN’ки (Samba + PureFTPd)

В данной статье я опишу создание удобного файлового сервера для небольшой локальной сети. Для выполнения данной задачи мы будем использовать два файловых сервера Samba и PureFTPd. Главная роль самбы – удобство подачи информации пользователям. Они могут к примеру смотреть фильмы прямо с сервера без необходимости заранее скачивать их отдельно на свой компьютер. Доступ на правку файлов через самбу будет запрещен (спасаемся от вирусов и неадекватных пользователей). Также создадим отдельную папку под запись, но сделаем запрет на заливку исполняемых файлов. FTP сервер будет иметь опцию запрещающую изменение файлов на сервере, только дополнение. Это спасет нас от удаления файлов на сервере без соглашения с администратором. В итоге мы имеем схему которую можно применить к общественным локальным сетям с небольшим количеством пользователей.

Настройка SMB сервера сводится к правке конфигурационного файла /etc/samba/smb.conf

[global]
        workgroup = HOME
        server string = Main Server
        map to guest = Bad User

# Папка с разрешением на запись и запретом на определенные файлы
[!sharez]
        path = /var/ftp/!sharez
        read only = No
        guest ok = Yes
        veto files = /*.dll/*.bat/desktop.ini/Desktop.ini/*.com/*.scr/*.lnk/*.tmp/*.htt/*.exe/*.scr/kht/

# Папки с запретом на запись
[video]
        path = /var/ftp/video
        guest ok = Yes

[books]
        path = /var/ftp/books
        guest ok = Yes

[music]
        path = /var/ftp/music
        guest ok = Yes

[soft]
        path = /var/ftp/soft
        guest ok = Yes

[games]
        path = /var/ftp/games
        guest ok = Yes

[photo]
        path = /var/ftp/photo
        guest ok = Yes
        veto files = /*.scr/

Настройки ftp сервера будем указывать при запуске исполняемого файла демона. Прописываем в файл /etc/rc.local строки:

pure-ftpd -K -M -9 cp1251 -B -o

Тем самым мы указываем серверу что необходимо работать в кодировке cp1251 и запрещать изменять файлы на сервере (только заливать новые)

Tuesday, February 15, 2011

OpenWRT. Tips & Tricks

  • Проброс сетевого порта к компьютеру в LAN’ке.
Вносим дополнение в конфигурационный файл фервола (/etc/config/firewall)

config 'redirect'
    option 'src' 'wan'
    option '_name' 'web'
    option 'proto' 'tcp'
    option 'src_dport' '80'
    option 'dest_ip' '192.168.0.200'
    option 'dest_port' '80'
  • Боремся с “Rejected request from RFC1918 IP to public server address”
Дополняем файл /etc/firewall.user (после этого не забываем выполнить /etc/init.d/firewall restart)

iptables -t nat -A prerouting_rule -d XX.XX.XX.XX -p tcp --dport 80 \
        -j DNAT --to 192.168.0.YY
iptables -A forwarding_rule -p tcp --dport 80 -d 192.168.0.YY -j ACCEPT
iptables -t nat -A postrouting_rule -s 192.168.0.0/24 -p tcp --dport 80 \
        -d 192.168.0.YY -j MASQUERADE
где XX.XX.XX.XX – WAN IP адрес, 192.168.0.YY – Внутренний IP адрес машины на которую мы заходим из вне.
  • Блокируем доступ в WAN зону по маку.
Вносим дополнение в конфигурационный файл фервола (/etc/config/firewall)

config rule
        option src              lan
        option dest             wan
        option src_mac          00:00:00:00:00
        option target           REJECT
  • Конфигурация DMZ
Вносим дополнение в конфигурационный файл фервола (/etc/config/firewall)

config redirect
    option src              wan
    option proto            all
    option dest_ip          192.168.0.200
  • Блокируем доступ по портам
Для внесени запрета к доступу по определенным сетевым портам портам вносим дополнение в /etc/iptables.user (после этого не забываем выполнить /etc/init.d/firewall restart)


iptables -A forwarding_rule -p tcp --dport 5000:5800 --jump REJECT

Здесь мы заблокировали диапазон портов с 5000 по 5800
  • Разрешаем доступ в интернет только определенным макам
iptables -A forwarding_rule -m mac --mac-source NN:NN:NN:NN:NN:NN - j ACCEPT
iptables -A forwarding_rule -m mac --mac-source MM:MM:MM:MM:MM:MM - j ACCEPT
iptables -A forwarding_rule -j DROP

Sunday, February 13, 2011

Настройка Dual PPTP на OpenWRT с указанием дополнительных маршрутов.

В данной статье я приведу рабочие конфигурационные файлы для организации подключения DHCP+PPTP. Дополнительные маршруты используются для обмена между участниками этой сети без понижения скорости.

Для начала необходимо установить pptp клиент:

# opkg install pptp

Пишем конфигурационные файлы.

# nano /etc/config/network 

config interface loopback
    option ifname lo
    option proto static
    option ipaddr 127.0.0.1
    option netmask 255.0.0.0

config interface lan
    option ifname eth0.1
    option type bridge
    option proto static
    option ipaddr 192.168.0.249
    option netmask 255.255.255.0

config interface wan
    option ifname eth1
    option ipproto dhcp
    option proto dhcp
    option macaddr 00:11:00:22:11:BB

config interface myinet
    option proto pptp
    option server 172.16.0.29
    option username user_login
    option password user_password

config switch
    option name rtl8366s
    option reset 1
    option enable_vlan 1

config switch_vlan
    option device rtl8366s
    option vlan 1
    option ports "0 1 2 3 5t"

config 'route'
    option 'interface' 'wan'
    option 'target' '94.25.31.0'
    option 'netmask' '255.255.255.0'
    option 'gateway' '10.38.0.1'

config 'route'
    option 'interface' 'wan'
    option 'target' '94.232.120.0'
    option 'netmask' '255.255.248.0'
    option 'gateway' '10.38.0.1'

config 'route'
    option 'interface' 'wan'
    option 'target' '94.158.112.0'
    option 'netmask' '255.255.240.0'
    option 'gateway' '10.38.0.1'

config 'route'
    option 'interface' 'wan'
    option 'target' '62.33.35.0'
    option 'netmask' '255.255.255.0'
    option 'gateway' '10.38.0.1'

config 'route'
    option 'interface' 'wan'
    option 'target' '91.192.32.0'
    option 'netmask' '255.255.252.0'
    option 'gateway' '10.38.0.1'

config 'route'
    option 'interface' 'wan'
    option 'target' '172.16.0.0'
    option 'netmask' '255.240.0.0'
    option 'gateway' '10.38.0.1'


# nano /etc/config/firewall

config 'defaults'
    option 'syn_flood' '1'
    option 'input' 'ACCEPT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'

config 'zone'
    option 'name' 'lan'
    option 'input' 'ACCEPT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'

config 'zone'
    option 'name' 'wan'
    option 'network' 'wan myinet'
    option 'input' 'REJECT'
    option 'output' 'ACCEPT'
    option 'forward' 'REJECT'
    option 'masq' '1'
    option 'mtu_fix' '1'

config 'forwarding'
    option 'src' 'lan'
    option 'dest' 'wan'

config 'rule'
    option 'src' 'wan'
    option 'proto' 'udp'
    option 'dest_port' '68'
    option 'target' 'ACCEPT'
    option family ipv4

#Allow ping
config rule
    option src wan
    option proto icmp
    option icmp_type echo-request
    option target ACCEPT

config 'include'
    option 'path' '/etc/firewall.user'

Делаем NAS из роутера (Установка Samba3 и PureFTPd на OpenWRT)

Про установку OpenWRT на роутер DLink DIR-825 с использованием внешнего диска можете почитать в предыдущей статье (Установка OpenWRT на DIR-825 (extroot FS)). В данной статье я покажу как установить на роутер Самбу и ФТП сервер. Самба сервер будет иметь два каталога – один на запись, другой только для чтения. Целью ФТП сервера будет заливка файлов на диск.

Первым делом установим необходимые нам пакеты

# opkg install samba3 pure-ftpd

После этого делаем правку конфигурационных файлов:

# nano /etc/config/samba

##############################################
config samba
option 'name' 'openwrt'
option 'workgroup' 'openwrt'
option 'description' 'openwrt'
option 'homes' '1'

config sambashare
option 'name' 'files'
option 'path' '/root/var/ftp'
option 'read_only' 'yes'
option 'guest_ok' 'yes'
option 'create_mask' '0700'
option 'dir_mask' '0700'
#option 'users' 'root'

config sambashare
option 'name' 'temp'
option 'path' '/root/var/ftp/temp'
option 'read_only' 'no'
##############################################

#nano /etc/samba/smb.conf.template

##############################################
[global]
netbios name = |NAME|
workgroup = |WORKGROUP|
server string = |DESCRIPTION|
syslog = 10
encrypt passwords = true
passdb backend = smbpasswd
obey pam restrictions = yes
socket options = TCP_NODELAY
dos charset = 866
unix charset = UTF8
#display charset = LOCALE
preferred master = yes
os level = 20
security = share
guest account = nobody
invalid users = root
smb passwd file = /etc/samba/smbpasswd
hosts allow = 127.0.0.1 192.168.0.2 192.168.0.200 192.168.0.7
##############################################

# nano /etc/config/pure-ftpd

##############################################
config pure-ftpd
option port '21'
option noanonymous '1'
option chrooteveryone '1'
option maxclientsperip '10'
option maxclientsnumber '4'
option peruserlimits '3:4'
option umask '133:022'
option authentication 'unix'
option enabled '1'
option clientcharset 'utf8'
##############################################