Originally Posted by
lagshmi
в каком режиме работает?))
Кстати не верьте человеку с ником W... т.к. netbios over IP тоже прекрасно работает в режиме tap))) у меня даже через gprs)))
Ок. Понял )) Пока добил режим роутера клиент-сервер со статик ключем. На днях думаю добью полноценный серверный вариант на tun и попробую еще и tap. Посмотрим, что быстрее безглючнее. Так же попробую соединить два роутера, думаю прокатит раз могу из под лина к роутеру клиентом приатачиться.
И так, вот что получилось:
1.Сервер
после установки openvpn как ipkg пакета в /opt/etc/init.d создается файл автозапуска S20openvpn (не знаю почему в топиках пишут про создания s24openvpn, хотя изначально я я его создавал). Так вот, !нинада! ничего создавать, надо просто поставить комментарий # в строке return 0 и все - получен рабочий скрипт.
/opt/etc/openvpn/server.conf
Code:
proto udp
port 5555
dev tun0
secret static.key
verb 3
comp-lzo
keepalive 15 60
ifconfig 10.0.0.1 10.0.0.2
push "dhcp-option DNS ip.днс.провайдера.1*"
push "dhcp-option DNS ip.днс.провайдера.2*"
script-security 2
up ./server.up
где ip.днс.провайдера.1 вида 12.34.56.78
/opt/etc/openvpn/server.up
Code:
#!/bin/sh
/opt/sbin/openvpn --mktun --dev tun0
ifconfig tun0 10.0.0.1 netmask 255.255.255.0 promisc up
route add -net Подсеть.Клиента* netmask 255.255.255.0 gw 10.0.0.2
где Подсеть.Клиента вида 192.168.2.0 или 192.168.29.0 и т.п.
в /usr/local/sbin/post-firewall
если пустой пишем сначала
Code:
iptables -P INPUT DROP
iptables -D INPUT -j DROP
или если эти и еще какие либо правила уже есть (напр. ssh) то добавляем
Code:
iptables -I INPUT -p udp --dport 5555 -j ACCEPT
iptables -t nat -I PREROUTING -i eth1 -p udp --dport 5555 -j DNAT --to-destination $4:5555
iptables -A INPUT -j DROP
iptables -I INPUT -i tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ppp0 -j MASQUERADE
хотя думаю здесь можно будет пару строк урезать, завтра попробую.
в /usr/local/sbin/post-boot
добавляем
Code:
/opt/etc/init.d/S20openvpn
ну и заклинание на запоминание
PHP Code:
flashfs save && flashfs commit && flashfs enable && reboot
на этом с сервером вроде все.
2.Клиент
Привожу настройки под линукс и, видимо, под второй роутер, под винду правьте сами (ну не дружу я с ней).
client.conf
Code:
remote DynDNS.subdomain.name (или ip сервера)
proto udp
port 5555
dev tun0
secret static.key
verb 3
comp-lzo
keepalive 15 60
redirect-gateway
ifconfig 10.0.0.2 10.0.0.1
up ./client.up
client.up (под виндой видимо будет bat или cmd)
Code:
#!/bin/bash
/usr/sbin/openvpn --mktun --dev tun0
ifconfig tun0 10.0.0.2 netmask 255.255.255.0 promisc up
route add -net Подсеть.Роутера* netmask 255.255.255.0 gw 10.0.0.1
где Подсеть.Роутера вида 192.168.2.0 или 192.168.29.0 и т.п. (Вроде должна отличаться от подсети клиента, т.е. одинаковую ставить неЗя, но что-то мне подсказывает что Зя, буду пробовать).
клиента пущать, как и сервер (см. S20openvpn) строкой
типа openvpn --cd путь_к_папке_с_конфигом_и_ключами --config client.conf
тогда в самом конфиге нет необходимости прописывать пути к ключам и т.п.
порт 5555 в конфигах можно менять на другой ( желательно старше 1024 ) ну и править его везде (и в настройках фаера в т.ч.)
Сейчас vpn у меня стартует одной кнопочкой на которую повешен скриптик:
Code:
#!/bin/bash
vpn=$(ps -e | grep openvpn)
if [ "$vpn" != "" ]; then
sudo killall -15 openvpn
else
sudo openvpn --cd /home/user/openvpn_dir/ --config client.conf
fi
Тык как для запуска, так и для остановки.
Для индикации повесил через Generic Monitor второй скриптик:
Code:
#!/bin/bash
vpn=$(ps -e | grep openvpn)
if [ "$vpn" != "" ]; then
vpn='/home/user/openvpn_dir/vpn_on.png'
else
vpn='/home/user/openvpn_dir/vpn_off.png'
fi
echo "<img>"$vpn"</img>"
echo "<tool>VPN</tool>"
Для того ч.б. sudo не спрашивал пароля я создал группу vpn, добавил себя в нее и в /etc/sudouser разрешил этой группе выполять opnevpn и killall )))
Может не самый удачный вариант, но получается миленько так.