Назад | Перейти на главную страницу

Маршрутизация трафика по псевдониму Ethernet на шлюз по умолчанию

Этот вопрос связан с предыдущий я спросил.

Я хочу настроить двойной клиентский ящик OpenVPN, чтобы компьютер, шлюз которого был настроен на eth0: 0, направлял весь свой трафик через один туннель OpenVPN, а компьютер, шлюз которого установлен на eth0: 1, направлял весь свой трафик через другой туннель OpenVPN. В конце концов, я хочу иметь возможность иметь несколько компьютеров, подключающихся к моему двойному клиентскому компьютеру, совместно используя этот туннель OpenVPN (но не подозревая друг о друге).


(источник: serahill.com)

Я установил псевдонимы Ethernet в своем двойном клиентском блоке, и я установил свой шлюз на подключающемся хосте к псевдониму Ethernet в двойном клиентском блоке. Однако маршрутизация не происходит должным образом. Любые эхо-запросы от моего подключающегося хоста идут напрямую на шлюз по умолчанию двойного клиента, а не через туннель.

Вот команды маршрута, которые я использую после настройки туннеля:

ip route add default dev $1 table us_table
ip rule add from [ip address of my ethernet alias] table us_table
ip route flush cache
iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE[/code]

Это таблица маршрутизации после установки туннеля:

root@ahost:/etc/openvpn# ip route show
10.26.0.0/24 via 10.26.0.1 dev tun0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.242 
10.26.0.0/16 dev tun0  proto kernel  scope link  src 10.26.0.2 
default via 192.168.1.1 dev eth0  metric 100

Это таблица маршрутизации us_table:

root@ahost:/etc/openvpn# ip route show table us_table
default dev tun0  scope link 

Мои правила:

root@ahost:/etc/openvpn# ip rule show
0:  from all lookup local 
32765:  from 192.168.1.242 lookup us_table 
32766:  from all lookup main 
32767:  from all lookup default 

Есть предложения о том, что мне не хватает или что я делаю неправильно? Я здесь в тупике ...

Основываясь на предложении @ syneticon-dj, я назначил разные подсети для разных клиентов OpenVPN и настроил маршрутизацию так, чтобы все IP-адреса в определенной подсети направлялись на конкретное устройство tun.

Это означает, что все подключающиеся клиенты должны настроить свой шлюз на шлюз OpenVPN, а их IP-адрес должен находиться в правильной подсети.

Мои команды после запуска OpenVPN:

ip route add default dev tun0 table us_table
ip rule add from 192.168.233.0/24 table us_table
ip route flush cache
iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE

Вы установили правило, соответствующее псевдониму Ethernet-адреса:

ip rule add from [ip address of my ethernet alias] table us_table

Однако это никогда не будет совпадать, поскольку маскировка находится в цепочке POSTROUTING, то есть происходит после того, как решения о маршрутизации уже были приняты.

Я никогда не использовал маршрутизацию на основе политик, поэтому могу только догадываться, что вам нужно сделать, чтобы это заработало. На странице руководства говорится, что вы можете выполнить NAT раньше других правил, это может помочь вам разобраться. В качестве альтернативы вы можете использовать фактический IP-адрес ноутбуков или рабочих станций в качестве исходных адресов (или диапазонов).