Iptables 重定向和默认值

Iptables 重定向和默认值

以下命令均按预期运行。我发布此信息只是为了确保我所做的事情不会影响其他服务。我有两个问题:

1) 我注意到默认情况下有一些防火墙规则。为什么我再也看不到它们了?

2)停止服务后 iptables 如何工作?

[root@server home]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255 
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353 
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631 
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631 
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

[root@server home]# /etc/init.d/iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]

[root@server home]# /sbin/iptables -t nat -I PREROUTING -s ! 127.0.0.1 -p tcp --dport 3306 -j REDIRECT --to-ports 4040
[root@server home]# echo $?
0
[root@server home]# /etc/init.d/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    REDIRECT   tcp  -- !127.0.0.1            0.0.0.0/0           tcp dpt:3306 redir ports 4040 

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         


[root@server home]# /sbin/iptables -t nat -D PREROUTING -s ! 127.0.0.1 -p tcp --dport 3306 -j REDIRECT --to-ports 4040
[root@server home]# echo $?
0

[root@server home]# /etc/init.d/iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

答案1

iptables 目录不是实际上,像 apache 这样的服务就是服务。iptables 是内核防火墙(称为 Netfilter)的用户空间接口。因此,通过停止 iptables“服务”,您实际上只是卸载了所有防火墙规则并将默认策略设置为ACCEPT

关于您第一个关于默认规则的问题,您需要查看发行版的 iptables 配置文件。如果您使用的是基于 RHEL 的发行版,则该文件通常是/etc/sysconfig/iptables。这些规则未显示的原因是,当您停止 iptables“服务”时,它们都从防火墙配置中清除了。您希望保留的所有防火墙规则都需要添加到此文件中。如果您在命令行上添加 iptables 规则,则下次重新启动 iptables 或重新启动服务器时,它将丢失。

相关内容