Как постоянно обновлять iptables
Я пытаюсь перенаправить HTTP-трафик на порт 8080 на том же компьютере, и ниже действуют правила iptables.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
Я пытаюсь выяснить, как сделать это изменение постоянным, если вы перезагрузите систему.
Я использую сервер Ubuntu 11.10.
Ответы
Ответ 1
Один из способов сделать это:
vim /etc/network/interfaces
Добавьте следующую строку вместе с вашими директивами eth0:
post-up /sbin/iptables-restore < /etc/iptables-up.rules
Теперь запустите следующую команду
iptables-save > /etc/iptables-up.rules
Надеюсь, это поможет.
Ответ 2
Ubuntu (и Debian) предлагают пакет iptables-persistent (Debian: http://packages.debian.org/wheezy/iptables-persistent, Ubuntu: http://packages.ubuntu.com/saucy/iptables-persistent), который делает именно то, что вы хотите. Как root, или через sudo:
apt-get install iptables-persistent
iptables-save > /etc/iptables/rules.v4
Если вы работаете с ip6tables
, вам также понадобится ip6tables-save > /etc/iptables/rules.v6
.
Вы должны сохранить таблицы снова (iptables-save > /etc/iptables/rules.v4
, ip6tables-save > /etc/iptables/rules.v6
) после внесения любых изменений.
В более ранних версиях (до iptables-0.5 и до Debian Wheezy) вам нужно записать в другой файл:
iptables-save > /etc/iptables/rules
Ответ 3
Не можем ли мы сделать то же самое с rc.local, но выполните следующие шаги.
iptables-save > current_iptables_rules
Затем перейдите в /etc/rc.local и введите следующие
iptables-restore < current_iptables_rules
Разве это не будет достигнуто? Я мог бы что-то упустить.
Ответ 4
Добавьте их в /etc/ufw/before.rules. Синтаксис немного отличается, но вы увидите, как он работает.
UFW является интерфейсом брандмауэра Ubuntu к iptables. Возможно, вам потребуется включить UFW с помощью sudo ufw enable
, но вы можете просто не устанавливать какие-либо правила внутри ufw.