Мне нужно установить правило для доступа к моему веб-серверу (который работает на порту 7000) через порт 80:
ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000
Пока это работает отлично.
Но если я перезагружу сервер, правило исчезнет. Что нужно сделать, чтобы сделать это правило постоянным?
Элиас
Какой дистрибутив GNU / Linux вы используете?
Для Debian / Ubuntu простое решение - добавить вызов iptables к подключению post-up в /etc/network/interfaces
как это:
# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000
В системах на базе Red Hat / Fedora:
service iptables save
И убедитесь, что iptables
служба настроена на запуск при загрузке: chkconfig iptables on
Обычно вы добавляете команды iptables в сценарий запуска сети, чтобы он запускался при запуске сетевого подключения.
Необходимые изменения файлов различаются от дистрибутива к дистрибутиву.
Если вы используете Ubuntu (и, возможно, это верно и для Debian, и для других), вы можете использовать команды iptables-save
и iptables-restore
чтобы сохранить конфигурацию при перезагрузке.
вы можете добавить эту строку в /etc/conf.d/local.start
Вместо того, чтобы повторно вызывать iptables, я предлагаю следующие шаги:
[1] Настройте iptables по своему вкусу (блоки, антиспуф, редиректы и т. Д.)
[2] Сохраните конфигурацию iptables:
iptables-save > /etc/my-iptables.conf
(Или используйте имя по своему вкусу)
[3] Создайте сценарий (например, /etc/my-iptables-init.sh
), содержащий эти строки:
#!/bin/bash
iptrest="<location_of_iptables-restore>"
cat="/bin/cat"
conf="/etc/my-iptables.conf"
#
$cat $conf | $iptrest
(Некоторые говорят, что iptables-restore < /etc/my-iptables.con
иногда не работает)
[4] Вызовите этот сценарий из ... откуда угодно. Может быть / etc / network / interfaces или (я предпочитаю) /etc/rc.local