Я хочу ограничить весь трафик с моей машины Ubuntu, чтобы он входил или выходил из локальной сети ( eth0
) или из или в мой VPN ( tun0
). Должна быть возможность подключить маршрутизатор в локальной сети, но не возможно выйти из локальной сети без использования VPN.
Так как у меня нет опыта работы с iptables и я не смог найти никаких инструкций, я попробовал UFW, но у меня ничего не получилось.
Спасибо за подсказки и фрагменты кода, как приблизиться к этому!
решение1
Вам нужно будет работать с цепочкой INPUT таблицы фильтров с действием по умолчанию DROP, а затем установить правила ACCEPT для входящих пакетов (-i) на каждом интерфейсе. Для повышения безопасности вы также можете принудительно использовать подсеть исходного хоста, но приведенных ниже правил будет достаточно.
iptables -t filter -p INPUT DROP
iptables -t filter -A INPUT -i eth0 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
Если вы также хотите применить то же самое к трафику, исходящему с хоста, выполните следующие действия:
iptables -t filter -p OUTPUT DROP
iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
Хотя, если вы это сделаете, у вас действительно может не быть других интерфейсов. Кроме того, lo
он там, потому что это интерфейс loopback; без этих правил loopback больше не будет работать.
Обратите внимание: если ваш хост является маршрутизатором, эти правила не будут применяться к трафику, который он маршрутизирует (только к трафику, который он генерирует сам или который предназначен для него, а не проходит через него).