Template:Lang/How to edit iptables rules

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(对 iptables 的更改即时生效)
(追加规则)
Line 53: Line 53:
  
 
==== 追加规则 ====
 
==== 追加规则 ====
 +
 +
下面在指定的链的最后面添加一条规则:
 +
 +
<pre>[root@server ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 +
[root@server ~]# iptables -L
 +
Chain INPUT (policy DROP)
 +
target    prot opt source              destination       
 +
ACCEPT    all  --  anywhere            anywhere            state RELATED,ESTABLISHED
 +
ACCEPT    icmp --  anywhere            anywhere           
 +
ACCEPT    all  --  anywhere            anywhere           
 +
ACCEPT    tcp  --  anywhere            anywhere            state NEW tcp dpt:ssh
 +
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:http
 +
 +
Chain FORWARD (policy ACCEPT)
 +
target    prot opt source              destination       
 +
 +
Chain OUTPUT (policy ACCEPT)
 +
target    prot opt source              destination </pre>
 +
 +
注意 INPUT 链的最后一行。现在该链中已经有 5 条规则了。
  
 
==== 删除规则 ====
 
==== 删除规则 ====

Revision as of 09:43, 23 February 2014

在这篇文档里里我们将主要举例介绍三种编辑 iptables 规则的方式:

  • CLI: iptables 命令行接口和系统配置文件 /etc/sysconfig/iptables.
  • TUI 基于文本的接口: setup 或 system-config-firewall-tui
  • GUI: system-config-firewall

需要注意的是本篇文章只是说明了如何编辑已有 iptables 规则,并不包含开始的创建规则链。

Contents


CLI(命令行接口)

对 iptables 的更改即时生效

下面的过程可以在防火墙运行的情况下改变防火墙策略。


Stop (medium size).png
警告
不当的 iptables 规则可能会破坏 Fedora 系统的网络连接。

阅读 man 手册中关于 iptables 的部分(man iptables)来获取深入的解释和高级复杂的规则实例。

Important.png
需要超级用户权限
这些命令必须要有超级用户权限才能执行,请使用 sudo 或者 su 来获取超级用户权限。


列出现有规则

使用
iptables -L
命令可以查看当前正在使用的 iptables 规则。
Note.png
端口数值
使用 -L 选项列出的端口数值是其对应的服务名称而不是端口号。如果要看端口号,请包含 -n 选项。
iptables -L -n
Note.png
查看计数器
使用 -L 选项列出的规则并不包含匹配的计数。使用 -v 选项来显示匹配计数。
iptables -L -v

允许已经建立及其相关的连接、icmp 请求、所有本地数据和 ssh 通讯的 iptables 规则例子:


[root@server ~]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

注意规则是按顺序匹配的,只要有匹配的规则便不会再往下接着检查。因此,举个例子来说,如果一条规则拒绝 ssh 连接,其后又有一条规则允许 ssh,那么就会应用拒绝 ssh 的规则,后面允许 ssh 连接的规则就不会应用,也就无法起到作用。

追加规则

下面在指定的链的最后面添加一条规则:

[root@server ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@server ~]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

注意 INPUT 链的最后一行。现在该链中已经有 5 条规则了。

删除规则

插入规则

替换规则

清空规则

使规则永久生效

TUI(基于文本的接口)

GUI