Ограничить все исходящие соединения определенным интерфейсом и заблокировать, если они недоступны

Я запускаю Centos 7 на виртуальной машине (не думаю, что это должно иметь значение, но для контекста ...)

Внутри виртуальной машины я Запускаю программу для создания туннеля. Я уже могу принимать соединения от хоста нормально, но я хочу принудительно передать весь исходящий трафик через туннель.

Как я могу разрешить возврат пакетов для существующих соединений, при этом гарантируя, что новые соединения не будут устанавливаться из коробки, кроме как через tun0?

Я рассмотрел этот вопрос iptables блокирует все исходящие соединения , но это выглядит немного грубой силой ... Я использовал firewall-cmd и вывод для iptables -L -n -v является подробным.

И наоборот, с Использовать определенный интерфейс для исходящих подключений (Ubuntu 9.04) , я не вижу, как применить его к centos .

Как я могу надежно гарантировать, что весь исходящий трафик либо установлен через tun0, либо не установлен вообще?

1
задан 27 August 2019 в 01:06
1 ответ

Это эффективно предотвратит любой исходящий (IPv4) трафик, кроме tun0.

iptables -F OUTPUT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -P OUTPUT DROP

Имейте в виду, что это предотвратит любой исходящий трафик на любой интерфейс, за исключением tun0, который включает трафик DHCP, установленные туннели SSH или исходящие пакеты из установленного туннеля.

Аналогичным образом это можно применить к IPv6, используя ip6tables .

2
ответ дан 3 December 2019 в 20:06

Теги

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