关于iptables添加规则不生效的问题详解程序员

1.我们要增加的规则是:
-A INPUT -p tcp -m state –state NEW -m tcp –dport 82 -j ACCEPT
#  即开放82的tcp端口。

2.第一种方法,使用命令增加:
首先用命令增加规则:

iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 82 -j ACCEPT

上面的命令即时生效,但是重启iptables服务后就消失了。如何永久生效呢?

/etc/rc.d/init.d/iptables save 或者 service iptables save

service iptables restart

 

然后看下配置文件里,是有的。以后重启iptables服务,或者重启系统这条规则都会生效。

[[email protected] ~]# cat /etc/sysconfig/iptables | grep 82
-A INPUT -p tcp -m state –state NEW -m tcp –dport 82 -j ACCEPT

 

实例:

iptables只允许指定ip地址访问指定端口

首先,清除所有预设置

iptables -F#清除预设表filter中的所有规则链的规则

iptables -X#清除预设表filter中使用者自定链中的规则

其次,设置只允许指定ip地址访问指定端口

iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp –dport 22 -j ACCEPT

iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp –sport 22 -j ACCEPT

iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp –dport 3306 -j ACCEPT 

iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp –sport 3306 -j ACCEPT

上面这两条,请注意–dport为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 –sport
同理,-s是指定源地址,-d是指定目标地址。

然后,关闭所有的端口

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

最后,保存当前规则

/etc/rc.d/init.d/iptables save
service iptables restart

这种iptables的规则设定适用于只充当MySQL服务器的管理和维护,外部地址不提供任何服务。

如果你希望yum可以运行的话,还需要添加以下内容,允许DNS请求的53端口,允许下载随机产生的高端口

iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp –sport 53 -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 10000:65535 -j ACCEPT

/etc/rc.d/init.d/iptables save
service iptables restart

[[email protected] ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

3.第二种方法,直接编辑iptables配置文件
vim /etc/sysconfig/iptables

将上面的语句-A INPUT -p tcp -m state –state NEW -m tcp –dport 82 -j ACCEPT直接插入到上述文件中。
这时候规则是不生效的,需要重启服务service iptables restart。之后这条规则就永久生效了。

4.总结一下。
如果是命令增加条目,那规则是临时的。
如果要永久生效,要把规则写进配置文件。写配置文件的办法有两种,一种是直接编辑,一种是service iptables save。
iptables服务每次启动的时候才会去读一次规则。如果直接编辑了配置文件,然后用service iptables save,那么内存里的配置规则是初始的,会覆盖你直接对配置文件的编辑。
因此,最后的结论是,如果是临时规则,用上面的第一种办法,但是不要save;如果是永久规则,用上面的第一种或第二种方法,二选一不可混用。

 

资料来源:https://blog.csdn.net/donglynn/article/details/73530542

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/1821.html

(0)
上一篇 2021年7月15日 23:28
下一篇 2021年7月15日 23:28

相关推荐

发表回复

登录后才能评论