Я добавляю это правило:
sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
--dport 1723 -j DNAT --to-destination a.b.c.d:10000
- При перезагрузке компьютера правила удаляются. Почему?
- Что я могу сделать, чтобы правила сохранялись?
В iptables нет опции, которая сделает ваши правила постоянными. Но вы можете использовать iptables-save
и iptables-restore
для выполнения своей задачи.
Сначала добавьте правило iptable, используя указанную вами команду.
Затем сохраните правила iptables в некоторый файл, например, /etc/iptables.conf
используя следующую команду:
$ iptables-save > /etc/iptables.conf
Добавьте следующую команду, /etc/rc.local
чтобы перезагрузить правила при каждой перезагрузке.
$ iptables-restore < /etc/iptables.conf
iptables-persistent
пакет, который сделает это.rc.local
так как между запуском сервисов и политикой брандмауэра будет разрыв в открытом окне. Я предпочитаю использоватьpre-up
крюк для петлевого интерфейса в ,/etc/network/interfaces
чтобы преодолеть это.rc.local
может иметь ожидаемый эффект, но в этой ситуации это является препятствием.(Потому что было предложено сделать это своим собственным ответом ...)
На Debian установить
iptables-persistent
.Пакет автоматически загрузится
/etc/iptables/rules
для вас во время загрузки.Каждый раз, когда вы изменяете свои правила, запускайте их,
/sbin/iptables-save > /etc/iptables/rules
чтобы сохранить. Вы также можете добавить это к последовательности выключения, если хотите.источник
/etc/iptables/rules.v4
и/etc/iptables/rules.v6
для IPv4 и IPv6 соответственно. Если вы хотите, чтобы таблица применялась к обоим видам соединений, вы должны сохранить ее в обоих файлах правил.После установки
iptables-persistent
выше вы также можете сохранить правила с помощью следующей более короткой команды в Ubuntu 16.04+:sudo netfilter-persistent save
И они также могут быть возвращены к тому, какими они были в прошлый раз, когда вы их сохранили:
sudo netfilter-persistent reload
источник