У меня есть интерфейс ppp0, настроенный как туннель VPN с помощью этого руководства. Теперь я должен направить трафик в определенных портах (80, 443) через интерфейс ppp0. Идеально, если сервер VPN снижается, весь HTTP (S) запросы должен перестать работать.
Существует много ответов для подобных проблем, предлагающих использовать iptables
, таким образом, я предполагаю, что это - путь движение, но я не могу выяснить правильные команды для использования для этого конкретного сценария.
Здесь мы возьмем www
как сервис для маршрутизации. Использовать mangle
таблица iptable для изменения www
пакеты.
sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1
Мы отмечаем все пакеты с целевым портом 80
как 0x1
.
Теперь сохраните и перезапустите iptables
.
service iptables save
service iptables restart
Затем, создайте новую таблицу маршрутизации IP в /etc/iproute2/rt_tables
просто дав запись
100 wwwtable
Запишите правило для www
пакеты.
ip rule add fwmark 0x1 lookup wwwtable
Добавьте маршрут за новой таблицей wwwtable
. Весь другой трафик пройдет шлюз по умолчанию, который виден ip route show
команда.
Мы копируем все записи кроме записи шлюза по умолчанию от основной таблицы.
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table wwwtable $ROUTE; done
Добавьте запись шлюза по умолчанию для www
пакеты к таблице wwwtable
sudo ip route add default dev ppp0 table wwwtable
Использовать ip route show table wwwtable
показать все маршруты в wwwtable
.
Повторите все для https
на порте 443
.