Linux命令—iptables
作用:用于 IP 包的过滤和实现 NAT.
表和链
常用的表有2个:filter
和 nat
. 每张表又包含多条链,每条链就是规则序列.
filter
表包含INPUT
,FORWARD
,OUTPUT
链.nat
表包含PREROUTING
,OUTPUT
,POSTROUTING
链.
- 本机收到数据包,由
nat.PREROUTING
先进行处理; - 如果数据包的目的地址是本机,则交由
filter.INPUT
进一步处理;然后将数据包交给本机上层协议栈. - 如果数据包的目的地址不是本机,则交由
filter.FORWARD
进一步处理;然后交由nat.POSTROUTING
进行处理.
- 数据包先后经过
nat.OUTPUT
和filter.OUTPUT
进行处理; - 然后交由
nat.POSTROUTING
进行处理.
-t
: 指定要处理哪张表,默认是 filter.-n
: 以数字形式显示地址和端口号.
[root@controller ~]# iptables -t nat -L POSTROUTING -n --line-number
Chain POSTROUTING (policy ACCEPT)
numtargetprot opt sourcedestination
1RETURNall--192.168.122.0/24224.0.0.0/24
2RETURNall--192.168.122.0/24255.255.255.255
3MASQUERADEtcp--192.168.122.0/24!192.168.122.0/24masq ports: 1024-65535
4MASQUERADEudp--192.168.122.0/24!192.168.122.0/24masq ports: 1024-65535
5MASQUERADEall--192.168.122.0/24!192.168.122.0/24
6POSTROUTING_directall--0.0.0.0/00.0.0.0/0
7POSTROUTING_ZONES_SOURCEall--0.0.0.0/00.0.0.0/0
8POSTROUTING_ZONESall--0.0.0.0/00.0.0.0/0
-L
: 列出指定链包含的规则.--line-number
: 显示每条规则在链中的位置(行号).2. 创建链
[root@localhost ~]# iptables -t filter -N chain1
-N
: 创建指定名称的链.3. 追加规则
[root@localhost ~]# iptables -A chain1 -p tcp --dport 22 -j DROP
-A
: 追加规则至指定链的末尾.-p
: 匹配指定的协议.--dport
: 匹配指定的目的端口号.-j DROP
: 如果匹配规则,则丢弃数据包.4. 插入规则
[root@localhost ~]# iptables -I INPUT 1 -s 116.56.140.61 -d 192.168.122.132 -j chain1
-I
: 插入指定规则到指定链的指定地方,此处是插入链首(序号为1).-s
: 匹配指定的源IP地址.-d
: 匹配指定的目的IP地址.-j chain1
: 如果匹配规则,则跳转到 chain1 链去继续匹配.5. 替换规则
[root@localhost ~]# iptables -R INPUT 1 -s 192.168.122.1 -d 192.168.122.132 -j chain1
-R
: 替换指定链指定规则为新的规则,此处替换第一条规则.6. 删除规则
[root@localhost ~]# iptables -D INPUT 1
-D
: 删除指定链上指定的规则,此处删除第一条规则.7. 清空规则
[root@localhost ~]# iptables -F chain1
-F
: 清空指定链上的所有规则.8. 重命名自定义链
[root@localhost ~]# iptables -E chain1 CHAIN1
-E
: 此处将 chain1 重命名为 CHAIN1.9. 删除自定义链
[root@localhost ~]# iptables -X CHAIN1
-X
: 删除指定的自定义链,需要确保没有其他链引用要删除的链.10. 设置内建链的默认目标规则
[root@localhost ~]# iptables -P INPUT ACCEPT
-P
: 设置指定链(需要是内建链)的默认目标规则,此处表示,如果所有规则都不匹配,则接受该数据包.11. SNAT
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 10.10.177.0/24 -o eth0 -j SNAT --to-source 10.10.188.232
-o
: 从指定的网络接口发送数据包.--to-source
: 将数据包的源地址替换为指定的地址.[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
-j MASQUERADE
: 自动使用合适的地址替换数据包源地址.12. DNAT
[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.31.168 -p tcp --dport 80 -i eth0 -j DNAT --to-destination 192.168.31.167:8080
【Linux命令—iptables】
-i
: 从指定的网络接口接收到数据包.--to-destination
: 将数据包的目的地址替换为指定的地址.推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术