Маршрутизация туннелей в OpenVPN

Добрый день!

Занимаюсь изучением OpenVPN, планирую использование в production.

Дано:
2 компьютера под управлением чистой консольной Ubuntu 12.04 LTS
Оба находятся в одной сети 192.168.11.хх и настроены по DHCP. В качестве шлюза указан 192.168.11.1. Оба имеют доступ в интернет через шлюз.

Задача:
Второй компьютер должен выходить в интернет используя первый.

Действия:
Использовал этот мануал

Первый компьютер (openvpn сервер):
ovpn_server.conf
daemon
port 777
proto tcp
dev tun
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
client-to-client
persist-tun
persist-key
comp-lzo
log-append /var/log/openvpn.log
script-security 2 system
up «echo 1 > /proc/sys/net/ipv4/conf/all/forwarding && iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE #»
down «iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -j MASQUERADE #»
ca ca.crt # Cертификат СА (центра сертификации)
cert server.crt # Cертификат сервера, подписанный СА
key server.key # Ключ шифрования сервера
dh dh1024.pem # Файл с Diffie-Hellman-параметрами
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.4.4»
push «comp-lzo»
push «redirect-gateway»

ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:27:8a:20:eb
inet addr:192.168.11.134 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe8a:20eb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:18046 errors:0 dropped:0 overruns:0 frame:0
TX packets:10783 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10047273 (10.0 MB) TX bytes:1916605 (1.9 MB)

lo Link encap: Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

route -n до запуска VPN сервера
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.1 0.0.0.0 UG 100 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

route -n после запуска VPN сервера
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.1 0.0.0.0 UG 100 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Второй компьютер (openvpn клиент):
ovpn_client.conf
client
remote 192.168.11.134 777
dev tun
proto tcp
persist-key
persist-tun
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
script-security 2 system
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
log /var/log/openvpn.log
verb 4

ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:27:25:36:1e
inet addr:192.168.11.126 Bcast:192.168.11.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe25:361e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5500 errors:0 dropped:0 overruns:0 frame:0
TX packets:4789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:564063 (564.0 KB) TX bytes:619753 (619.7 KB)

lo Link encap: Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

route -n после запуска VPN сервера
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.11.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

route -n после запуска VPN сервера c redirect-gateway
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 0.0.0.0 UG 0 0 0 tun0
10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.11.134 192.168.11.1 255.255.255.255 UGH 0 0 0 eth0

route -n до запуска VPN сервера
0.0.0.0 192.168.11.1 0.0.0.0 UG 100 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Результаты:
Без опции redirect gateway VPN сервер (10.8.0.1) и VPN клиент (10.8.0.6) пингуются успешно, соединения работают, но не более. До 10.8.0.2 и 10.8.0.5 пинги не доходят
C опцией redirect gateway никакие соединения не работают. До 10.8.0.2 и 10.8.0.5 пинги тоже не доходят.

Просьба помочь в настройке, заранее спасибо.

P.S. Оба компьютера работают в виртуальных машинах в одной VirtualBox. В обоих ВМ тип сетевого подключения «мост»

Update: Проблема была в маршрутизации, умолчальные скрипты перенастройки маршрутов не предусматривают работу хостов в одной подсети.
Правило не срабатывало из за этого:
192.168.11.134 192.168.11.1 255.255.255.255 UGH 0 0 0 eth0
После подключения клиент полностью терял коннект до сервера.
  • Вопрос задан
  • 3918 просмотров
Решения вопроса 1
centrist
@centrist
посмотрите или покажите еще iptables-save на сервере после запуска.

после запуска же с redirect-gateway пришлите начало traceroute в интернет — пакеты доходят?

Есть подозрение что iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE лучше сделать не через -s а через -o tun0 — так как -s может быть 192.168.11.126

route вроде правильные, хотя я уже отвык от этого формата и перешел на ip route

если ничего не поможет, придется смотреть tcpdump :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
До 10.8.0.2 и 10.8.0.5 пинги тоже не доходят

Так и не должны ж
Почитайте вот эту документацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы