linux маршрутизация - как переключать ПК между несколькими шлюзами

565
internet-og

У меня есть роутер linux с несколькими шлюзами (кабельный модем, ppp, vpn и т. Д.). Каков наилучший способ перенаправить весь интернет-трафик для отдельных пользователей через разные шлюзы?

Вот пример: Изображение сетевой диаграммы

Кажется, мне нужно создать отдельные таблицы маршрутизации для каждого соединения, добавить GW соединения, добавить IP-адрес соединения, добавить IP-адреса пользователя и включить NAT. Это работает с PPP, но не с OpenVPN (конфигурация по умолчанию, мой маршрутизатор является клиентом).

например:

openvpn --route-nopull --config ~/connect.ovpn & ip route add default via 10.8.0.5 table myvpn ip route add 10.8.0.1/32 via 10.8.0.5 table myvpn ip rule add from 10.8.0.6 table myvpn ip rule add from 192.168.1.3 table myvpn ip rule add from 192.168.1.4 table myvpn iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o myvpn -j MASQUERADE 

В этом примере маршрутизатор сам может подключиться через 10.8.0.6 (или любое другое подключение по отдельности), но клиенты не могут.

3
# route -n Таблица маршрутизации IP-адреса ядра Шлюз Genmask Флаги Метрика Ссылка Использовать Iface 0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 кабель 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 кабель xxx26 10.10.10.1 255.255.255.255 UGH 0 0 0 кабель 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 lan xxx26 является сервером openvpn internet-og 6 лет назад 0
# Список правил ip 0: из всех локальных поисков 32764: из поиска 192.168.1.3 myvpn 32765: из поисков 192.168.1.4 myvpn 32766: из поиска 10.8.0.6 myvpn 32767: из всех поисков основной 32768: из всех поисков по умолчанию internet-og 6 лет назад 0
# iptables -t nat -v -L POSTROUTING -n --line-number Цепочка POSTROUTING (политика ПРИНИМАЕТ 37 пакетов, 2856 байт) num pkts байт target prot opt ​​в исходном источнике 1 0 0 MASQUERADE all - * myvpn 192.168.1.0 / 24 0.0.0.0/0 internet-og 6 лет назад 0

2 ответа на вопрос

0
internet-og

Я нашел ответ здесь: Маршрутизация конкретной подсети в VPN-туннель

Это может быть адаптировано к моей ситуации или подобному. Обратите внимание на умный route-up.sh для копирования маршрутов в новую таблицу при запуске.

0
dirkt

VPN-туннель между машинами в вашей локальной сети и маршрутизатором с несколькими шлюзами является полным перебором.

Вместо этого используйте тегирование VLAN, чтобы разделить вашу локальную сеть на несколько «оверлеев» (разные цвета на схеме сети), убедитесь, что каждый пользователь / компьютер подключен к правильной VLAN, и настройте маршрутизатор для маршрутизации каждой VLAN на соответствующий шлюз.

Каждая VLAN будет отображаться как сетевой адаптер самостоятельно на маршрутизаторе. Предполагая, что маршрутизатор является своего рода встроенным Linux, вы можете легко использовать политику маршрутизации для интеграции выходного сетевого интерфейса в решения о маршрутизации. Обычно для этого нет необходимости iptables, если только вам не нужен брандмауэр (хотя по некоторым причинам многие люди в Интернете, похоже, хотят iptablesдля маршрутизации ... что является одной из моих любимых мозгов).

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