LINUX.ORG.RU
решено ФорумAdmin

Шлюз через клиента OpenVPN для определенного адреса внутри сети

 , ,


0

1

Привет. Есть необычная задача, которую не получается решить самому. Прошу помощи.

Существует две сети организации, соединенные при помощи OpenVPN. Адрес сервера в внутренней сети OpenVPN - 192.168.195.1, адрес клиента - 192.168.195.2. Локальная подсеть за сервером OpenVPN - 192.168.180.0.

Одну из машин за сервером (192.168.180.211) нужно вывести в интернет через шлюз клиента OpenVPN, для того чтобы она использовала его внешний IP.

Со стороны сервера добавляю маршрут и правила для хоста 192.168.180.211.

# ip route add default via 192.168.195.2 table 120
# ip rule add from 192.168.180.211 table 120

В итоге получется так:

# ip route list table 120
default via 192.168.195.2 dev tun1 

# ip rule
0:      from all lookup local 
32765:  from 192.168.180.211 lookup 120 
32766:  from all lookup main 
32767:  from all lookup default

При попытке зайти на гугл с машины 192.168.180.211, на стороне сервера (на интерфейсе OpenVPN - tun1) вижу след.:

# tcpdump -n -i tun1 ip src 192.168.180.211
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun1, link-type RAW (Raw IP), capture size 262144 bytes
21:08:55.648552 IP 192.168.180.211.49367 > 13.107.5.80.80: Flags [S], seq 4144276543, win 8192, options [mss 1460,nop,nop,sackOK], length 0
21:08:55.648601 IP 192.168.180.211.49368 > 13.107.5.80.80: Flags [S], seq 2365187574, win 8192, options [mss 1460,nop,nop,sackOK], length 0
21:08:58.336611 IP 192.168.180.211.49369 > 172.217.21.131.80: Flags [S], seq 682449834, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
21:09:01.345580 IP 192.168.180.211.49369 > 172.217.21.131.80: Flags [S], seq 682449834, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0

Но со стороны клинта OpenVPN не вижу ни одного пакета.

В iptables на время пердолинга сделал -P FORWARD ACCEPT.

★★

При попытке зайти на гугл с машины 192.168.180.211

Зачем сразу на гугл? ping на ip-адреса клиента работает? Клиент знает, что за сервером сеть?

mky ★★★★★ ()
Ответ на: комментарий от mky

Если пингануть с машины 192.168.180.211 клиента VPN через которого нужно выходить (192.168.195.2), то пакеты идут.

Вот дамп с клиента VPN (192.168.195.2)

# tcpdump -v -n -i tun1
tcpdump: listening on tun1, link-type RAW (Raw IP), capture size 262144 bytes
22:37:04.128229 IP (tos 0x0, ttl 127, id 2636, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.180.211 > 192.168.195.2: ICMP echo request, id 1, seq 29, length 40
22:37:04.128347 IP (tos 0x0, ttl 64, id 31382, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.195.2 > 192.168.180.211: ICMP echo reply, id 1, seq 29, length 40

Также с этой машины (192.168.180.211) пингуются хосты локалки за клиентом OpenVPN (не стал про них писать, чтобы не грузить лишней информацией).

В общем получается что не проходят именно пакеты которые идут в интернет.

static ★★ ()
Ответ на: комментарий от static

Да поможет. Поясню, с tun вот это «ip route add default via 192.168.195.2 table 120» работает не так как вы ожидаете, на самом деле оно равнозначно «ip route add default dev tun1 table 120», и когда вы посылаете пакет на адрес 13.107.5.80 сервер ovpn не в курсе какому из клиентов его послать, клиентов же может быть больше одного. С tap (он L2) будет работать обычная маршрутиризация.

anc ★★★★★ ()
Ответ на: комментарий от static

C tun тоже можно, но только для одного клиента, прописав в iroute сеть 0/0. Точнее прописать можно хоть всем, но в один момент времени работать будет только с одним (кто последний тот и прав) :) С tap оно фэншуйнее :)

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.