Проблема: iptables сбрасывается до настроек по умолчанию после перезагрузки сервера.
Я пытаюсь установить такое правило:
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
после этого делаю:
service iptables save
и он записывает что-то вроде этого
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
и после этого я просто побежал (это было сделано один раз):
chkconfig iptables on
(Я читал, что это нужно сделать, чтобы восстановить настройки после перезагрузки)
После этого перезагружаюсь и запускаю эту команду:
systemctl list-unit-files | grep iptables
и я вижу, что iptables.service включен, однако правило (открыть порт 3000) больше не работает.
Как мне сохранить эти настройки?
Отключите firewalld с помощью следующей команды:
systemctl disable firewalld
Затем установите iptables-service с помощью следующей команды:
yum install iptables-services
Затем включите iptables как службы:
systemctl enable iptables
Теперь вы можете сохранить свои правила iptable, выполнив следующую команду:
service iptables save
CentOS 7 использует БрандмауэрD сейчас! Использовать --permanent
флаг для сохранения настроек.
Пример:
firewall-cmd --zone=public --add-port=3000/tcp --permanent
Затем перезагрузите правила:
firewall-cmd --reload
На CentOS 7 Minimal вам может потребоваться установить iptables-services
пакет (спасибо @RichieACC для предложение):
sudo yum install -y iptables-services
А затем включите службу, используя systemd
:
sudo systemctl enable iptables.service
И запустите initscript, чтобы сохранить правила брандмауэра:
sudo /usr/libexec/iptables/iptables.init save
iptables-save > /etc/sysconfig/iptables
сохранит текущую конфигурацию без необходимости устанавливать какие-либо другие библиотеки или службы.
Вы можете напрямую изменить файл / etc / sysconfig / iptables. Перезагрузите службу iptables, чтобы перезагрузить правила из этого файла. Тем не менее, как вам уже сказали, firewalld - это новая система межсетевого экрана по умолчанию для Centos, и это хороший шанс узнать, как ее использовать, не так ли?
Может быть, такой сценарий кому-нибудь был бы полезен?
Помните, что вы потеряете все, что настроено в настоящее время, потому что он удаляет firewalld и сбрасывает все текущие правила в таблице INPUT:
yum remove firewalld && yum install iptables-services
iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables # To make sure the IPv4 rules are reloaded at system startup
Я думаю, вы хотите того же, если ваша система может быть достигнута (сейчас или в любое время позже) трафиком IPv6:
ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables # To make sure the IPv6 rules are reloaded at system startup