2012-02-17 3 views
37

Я пытаюсь перенаправить http-трафик на порт 8080 на том же компьютере и правила iptables ниже работают.Как постоянно обновлять 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.

+0

http://askubuntu.com/questions/66890/how-can-i -make-a-specific-set-of-iptables-rules-constant – azerafati

ответ

18

Один из способов сделать это будет:

vim /etc/network/interfaces 

Append ниже линии вместе с директивами ЛО:

Теперь запустите следующую команду

iptables-save > /etc/iptables-up.rules 

I надеюсь это поможет.

+10

Тот, кто найдет это, должен рассмотреть гораздо лучший ответ о 'iptables-persistent' на yomimono ниже. – zakx

+1

Никогда не используйте его таким образом, что оставляет окно открытым хотя бы на мгновение, неправильное соединение можно считать «УСТАНОВЛЕНЫ». Интерфейс должен быть 'lo' (loopback) вместо' eth0' и 'pre-up' вместо' post-up'. – poige

+0

Я получаю разрешение, запрещенное при попытке писать в '/ etc', даже в корневом режиме. – puk

2

Добавьте их в /etc/ufw/before.rules. Синтаксис немного отличается, но вы увидите, как он работает.

UFW является интерфейсом брандмауэра Ubuntu к iptables. Возможно, вам нужно включить UFW, используя sudo ufw enable, но вы можете просто не устанавливать какие-либо правила внутри ufw.

6

Мы не можем сделать то же самое с rc.local, но выполнить следующие шаги

iptables-save > current_iptables_rules 

Затем перейдите в /etc/rc.local и введите следующую

iptables-restore < current_iptables_rules 

Won» t, которые выполняют одно и то же? Я мог что-то упустить.

+0

Да, это должно сработать. –

132

Ubuntu (и Debian) предлагает пакет iptables-persistent (Debian: http://packages.debian.org/wheezy/iptables-persistent, Ubuntu: http://packages.ubuntu.com/saucy/iptables-persistent), который делает именно то, что вы хотите. Как корень, или через 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 хриплый) вам потребуется запись в другой файл:

iptables-save > /etc/iptables/rules 
+12

В случае, если это помогает кому-то еще ... мне потребовалось некоторое время, чтобы отследить, что мне действительно нужно было это сделать: iptables-save> /etc/iptables/rules.v4 – mdahlman

+9

Если вы используете IPv6, это может быть боль, чтобы убедиться, что правила вернутся в нужное место. Вы можете запустить следующее, чтобы это произошло автоматически: 'invoke-rc.d iptables-persistent save' –

+1

@mdahlman зависит от версии Debian/Ubuntu. Я считаю, что Debian <7 требует '>/etc/iptables/rules' и 7+ требует'>/etc/iptables/rules.v4' –