Этот вопрос связан с предыдущий я спросил.
Я хочу настроить двойной клиентский ящик 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-адрес ноутбуков или рабочих станций в качестве исходных адресов (или диапазонов).