У меня программный маршрутизатор на базе CentOS Linux 6. У меня есть 2 локальные сети, скажем Local1
и Local2
. У меня есть одно подключение к Интернету, и у меня есть VPN-соединение, которое я использую через этот Интернет.
Я использую iptables
и DHCP-сервер для совместного использования Интернет-соединения. Когда я включаю VPN, трафик Local1
и Local2
проходит через VPN, без VPN обе локальные сети выходят напрямую в Интернет.
Мой вопрос: как настроить программный маршрутизатор на базе CentOS для перенаправления одной локальной сети через VPN, а другой напрямую?
Я не могу сказать вам, как ... но я могу сказать вам теоретически.
Скорее всего, ваша VPN состоит только из определенной сети (или набора сетей). Вы можете настроить разделенное туннелирование, чтобы на псевдо-псевдониме сказать: «Любой трафик, предназначенный для« сети VPN », проходит через VPN-соединение». Тогда ваш маршрут по умолчанию 0.0.0.0 будет настроен на выход через интернет-соединение.
Я также считаю, что приоритет имеет значение. Убедитесь, что маршрут для сети VPN имеет более высокий приоритет, чем маршрут по умолчанию.
Сначала вы должны изменить конфигурацию VPN, чтобы она не настраивалась в качестве шлюза по умолчанию. Что это за VPN?
Во-вторых, вам нужно добавить правило iptables для перенаправления трафика с Local2 (eth0) на VPN (tun0)
ex.commands: iptables -I FORWARD -i eth0 -o tun0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
и второй
iptables -t nat -I POSTROUTING -o tun0 -s 192.168.0.0/24 -j MASQUERADE
Наконец, я нашел прочь. Требуется использовать iproute2
, но присутствуют некоторые неочевидные вещи.
ip rule
для создания политики маршрутизации на основе источника. ip route .... таблица
, чтобы добавить 3 маршрута к политике маршрутизации на основе источника: один, который устанавливает шлюз по умолчанию для Интернета, и два, которые задают шлюзы для обеих локальных сетей. Он не работает без настройки шлюзов локальных сетей, вероятно, потому что OpenVPN вносит много изменений в таблицу маршрутизации. правило ip
и ip route
не сохраняются, поэтому правила исчезают при перезагрузке. Обычно используются файлы интерфейса правил
и интерфейса маршрута
для установки статических маршрутов. Однако эти файлы проблематичны, если вы используете их с DHCP и / или точкой доступа Wi-Fi. Причина в том, что эти файлы применяются параллельно (как и раньше) при инициализации DHCP и hostapd
. Вот почему эти 2 файла часто приводят к неправильной таблице маршрутизации. Вместо этого я использую rc.local
для добавления маршрутов и правил с помощью командной строки при запуске системы, и с таким подходом я могу маршрутизировать один локальный сетевой адаптер через VPN, а другой напрямую. Вам необходимо использовать VPN без определенного шлюза по умолчанию, поэтому весь ваш трафик будет проходить через старый шлюз по умолчанию.
Затем вы можете добавить статический маршрут, который будет перенаправлять трафик в подсеть local1 в шлюз VPN.