LINUX.ORG.RU

OpenVPN и проблемы с настройкой маршрутов.

 ,


0

1

Поднимаю VPN на тестовом стенде с импользованием OpenVPN на железе из роутера-клиента (DD-WRT) и ПК-сервера. В качестве метода для OpenVPN был выбран статический ключ (чтобы не мучаться с генерацией сертификатов и упростить процесс до максимума). Использовал материалы отсюда: http://spvd.ru/page/ddwrt-openvpn-static

Локальная сеть роутера имеет адреса 192.168.11.XXX, пусть IP тестового ПК будет 169.254.0.4. В тунеле адреса сервера и роутера будут 10.0.1.1 и 10.0.1.2 соответственно. Сначала тестировал просто включив WAN роутера в сеть с моим ПК (DHCP выдал роутеру IP из сети 169.254.X.X), но не взлетело.

Конфиг роутера (клиент):

# Startup скрипт
cd /tmp
echo "remote 169.254.0.4
proto udp          
port 1194
dev tun0
secret /tmp/key
verb 3
comp-lzo
keepalive 15 60
daemon" > client.conf
echo "
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
" > key
ln -s /usr/sbin/openvpn /tmp/myvpn
/tmp/myvpn --mktun --dev tun0
ifconfig tun0 10.0.1.2 netmask 255.255.255.0 promisc up
route add -net 169.254.0.0 netmask 255.255.0.0 gw 10.0.1.1
sleep 5
/tmp/myvpn --config client.conf
И в файрволле:
# Firewall
iptables -I INPUT 2 -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
Теперь все запросы из клиента на ip 169.254.Х.Х должны уходить в тонель.

Подумал, что роутер и ПК должны быть в разных подсетях, и сменил настройку WAN роутера на статику 169.0.0.123 (255.0.0.0) - не взлетело. Вернул настройку роутера в DHCP и успешно пропинговал из роутера ПК-сервер: ping -I vlan2 169.254.0.4. На ПК выполнил следующее:

# cd /tmp
# echo "proto udp          
port 1194
dev tun0
secret /tmp/key
verb 3
comp-lzo
keepalive 15 60
daemon" > server.conf

# echo "
-----BEGIN OpenVPN Static key V1-----
...
-----END OpenVPN Static key V1-----
" > key

# ln -s /usr/sbin/openvpn /tmp/myvpn

# /tmp/myvpn --mktun --dev tun0
Mon Oct 14 10:54:37 2013 TUN/TAP device tun0 opened
Mon Oct 14 10:54:37 2013 Persist state set to: ON

# ifconfig tun0 10.0.1.1 netmask 255.255.255.0 promisc up

# route add -net 192.168.11.0 netmask 255.255.255.0 gw 10.0.1.2

# iptables -I INPUT 2 -p udp --dport 1194 -j ACCEPT
iptables: Index of insertion too big.

# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT

# iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT

# /tmp/myvpn --config server.conf
Теперь посмотрим, видит-ли мой ПК роутер (простой пинг запрещён, так что придётся извратиться)
# arping 169.254.0.123 (это ip роутрета-клиента в сети)
ARPING 169.254.0.123 from 169.254.0.4 eth0
Unicast reply from 169.254.0.123 [**:**:**:**:**:**]  0.711ms
Unicast reply from 169.254.0.123 [**:**:**:**:**:**]  0.635ms
Unicast reply from 169.254.0.123 [**:**:**:**:**:**]  0.652ms
Unicast reply from 169.254.0.123 [**:**:**:**:**:**]  0.647ms
Unicast reply from 169.254.0.123 [**:**:**:**:**:**]  0.619ms
^CSent 5 probes (1 broadcast(s))
Received 5 response(s)

# ping -I tun0 192.168.11.58 (ПК за роутером с ХР)
PING 192.168.11.58 (192.168.11.58) from 10.0.1.1 tun0: 56(84) bytes of data.
^C
--- 192.168.11.58 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9026ms


# ifconfig tun0 
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.0.1.1  P-t-P:10.0.1.1  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:840 (840.0 B)
И вот ifconfig из клиента:
# ifconfig tun0 
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.0.1.2  P-t-P:10.0.1.2  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:944496 errors:0 dropped:914951 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:1394235014 (1.2 GiB)
Список правил сервера:
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
По идее тут ничего не заблочено, и в правиле «iptables -I INPUT 2 -p udp --dport 1194 -j ACCEPT» нет необходимости. Что тут не так? Может быть такое, что файл ключа создался по-разному в роутере и на ПК?

★★

Проверил ключи - совпадают. На роутере openvpn жарит процессор (100% стабильно, но не до зависания интерфейсов) и валит в тонель дофига трафика: «3.2 GiB». Может, именнов этом дело? В dmesg по tun0 всего одна строка: «device tun0 entered promiscuous mode».

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 1)

пусть IP тестового ПК будет 169.254.0.4

Вам обязательно назначать адрес для клиента ил link-local подсети? С роутингом будут проблемы.

(DHCP выдал роутеру IP из сети 169.254.X.X) [/qoute] У меня есть подозрения что он не получил IP от DHCP, а сам свалился в link-local autoconf

BOOBLIK ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.