Я запускаю Centos 7 на виртуальной машине (не думаю, что это должно иметь значение, но для контекста ...)
Внутри виртуальной машины я Запускаю программу для создания туннеля. Я уже могу принимать соединения от хоста нормально, но я хочу принудительно передать весь исходящий трафик через туннель.
Как я могу разрешить возврат пакетов для существующих соединений, при этом гарантируя, что новые соединения не будут устанавливаться из коробки, кроме как через tun0?
Я рассмотрел этот вопрос iptables блокирует все исходящие соединения , но это выглядит немного грубой силой ... Я использовал firewall-cmd
и вывод для iptables -L -n -v
является подробным.
И наоборот, с Использовать определенный интерфейс для исходящих подключений (Ubuntu 9.04) , я не вижу, как применить его к centos .
Как я могу надежно гарантировать, что весь исходящий трафик либо установлен через tun0, либо не установлен вообще?
Это эффективно предотвратит любой исходящий (IPv4) трафик, кроме tun0.
iptables -F OUTPUT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -P OUTPUT DROP
Имейте в виду, что это предотвратит любой исходящий трафик на любой интерфейс, за исключением tun0, который включает трафик DHCP, установленные туннели SSH или исходящие пакеты из установленного туннеля.
Аналогичным образом это можно применить к IPv6, используя ip6tables
.