Направьте только HTTP (S) трафик через VPN

У меня есть интерфейс ppp0, настроенный как туннель VPN с помощью этого руководства. Теперь я должен направить трафик в определенных портах (80, 443) через интерфейс ppp0. Идеально, если сервер VPN снижается, весь HTTP (S) запросы должен перестать работать.

Существует много ответов для подобных проблем, предлагающих использовать iptables, таким образом, я предполагаю, что это - путь движение, но я не могу выяснить правильные команды для использования для этого конкретного сценария.

1
задан 14 September 2015 в 17:02

1 ответ

Здесь мы возьмем 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.

2
ответ дан 7 December 2019 в 13:53

Другие вопросы по тегам:

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