загрузка & ldquo; явная & rdquo; Правила iptables при загрузке или интерфейсе

Я хотел бы загрузить правила iptables при загрузке или при загрузке интерфейса в Ubuntu. Произведен поиск в StackExchange и других местах, и похоже, что наиболее распространенным подходом является использование пакета iptables-save / iptables-restore или iptables-persistent. Я бы предпочел (может быть из-за моей еще не зрелой природы Linux) хранить правила iptables в «явном» виде (например, iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT) вместо того, чтобы все разные правила были выгружены в один и тот же постоянный файл, где без комментариев и некоторой структуры , может быть сложно найти конкретное правило и изменить его.

То, что я сделал до сих пор - я добавил следующую строку в /etc/network/interfaces

post-up         sh -c "/etc/iptables/eth0.post-up.sh"

, где eth0.post-up.sh - файл, в котором явно заданы iptables (например, iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT). Все было бы хорошо, правила применяются, но причина, по которой я пишу здесь, заключается в том, что если я пытаюсь запустить iptables -L FORWARD, то я не вижу загруженных правил, хотя я уверен, что они применяются (это переадресация подсети правил, и я вижу, что пинг проходит, когда правило выполнено, и не проходит, когда правило не выполняется. Вот вывод:

# iptables -L FORWARD
Chain FORWARD (policy DROP)
target     prot opt source               destination
ufw-before-logging-forward  all  --  anywhere             anywhere
ufw-before-forward  all  --  anywhere             anywhere
ufw-after-forward  all  --  anywhere             anywhere
ufw-after-logging-forward  all  --  anywhere             anywhere
ufw-reject-forward  all  --  anywhere             anywhere
ufw-track-forward  all  --  anywhere             anywhere

Если я закомментирую вышеприведенный пост-ап ... в файле /etc/network/interfaces (убедившись, что правила не применяются) и затем запустив правила вручную, я получаю вывод:

# iptables -L FORWARD
Chain FORWARD (policy DROP)
target     prot opt source               destination
ufw-before-logging-forward  all  --  anywhere             anywhere
ufw-before-forward  all  --  anywhere             anywhere
ufw-after-forward  all  --  anywhere             anywhere
ufw-after-logging-forward  all  --  anywhere             anywhere
ufw-reject-forward  all  --  anywhere             anywhere
ufw-track-forward  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED 

Итак, правила применяются в обоих случаях, но в тогда первый случай iptables -L не показывает правила, а в дальнейшем он показывает.

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

ОБНОВЛЕНИЕ: приходится исправлять себя, не все правила iptables в файле eth0.post-up.sh выполняются, из 3 команд ниже:

/sbin/iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

только последняя ( выполняется POSTROUTING), который необходим для прохождения эхо-запроса, когда первые два не имеют никаких следов в iptables -Lnv FORWARD и не приводят к установлению соединения (например, wget google.com) с другого компьютера, который использует эту коробку в качестве маршрутизатора. Но если я запускаю этот файл вручную после загрузки - тогда все выполняется правильно, и ping, и wget с удаленного компьютера работают как положено.

2
задан 24 February 2017 в 19:27

1 ответ

Я использую softether vpn на моем пи. Я использую этот суть для установки его.

Softether (или по крайней мере этот сценарий) помещает iptable правила в/etc/rc.local

Как пример, это - мой

 # Start VPN Settings

 for vpn in /proc/sys/net/ipv4/conf/*; do echo 0         > $vpn/accept_redirects; echo 0 > $vpn/      send_redirects; done
 iptables -A FORWARD -i br0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
 iptables -A FORWARD -i br0 -o br0 -j ACCEPT

 # End VPN Settings

 exit 0

, Это должно выполнить Ваши iptable команды на начальной загрузке. Может быть более соответствующий путь, но это, кажется, работает на меня (по крайней мере, насколько vpn затронутый, никогда не имел проблем)

, Просто удостоверяются, что Вы помещаете таблицы прежде

 exit 0
0
ответ дан 24 February 2017 в 19:27

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

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