Большинство руководств по маршрутизации, которые я видел, предлагают добавить некоторые правила iptables kill-switch, чтобы избежать утечек. Для этого часто используется правило -A OUTPUT -o eth0 -j DROP
, но, поскольку я хотел бы разрешить вывод с моей машины, я заменил его на -A FORWARD -i eth0 ! -o tun0 -j DROP
. Я не очень знаком с iptables и боюсь, что в этом наборе правил может отсутствовать что-то, что может сделать мою установку бесполезной ...
Моя цель
- Разрешить пересылка из eth0 в tun0
- Отбросить любой перенаправленный пакет из eth0, идущий на любой другой интерфейс, кроме tun0, в случае, если туннель закрыт
- Разрешить входы для eth0
- Разрешить выходы из eth0
Любой перенаправленный трафик c должен быть защищен VPN, тогда как незащищенные входы и выходы в порядке.
Мой набор правил
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -o tun0 -j MASQUERADE
-A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i eth0 ! -o tun0 -j DROP