raw→mangle→nat→filter
语法:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
例:
iptables -t filter -I INPUT -p icmp -j REJECT
例:
[root@client ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
[root@client ~]# iptables -I INPUT -p udp -j ACCEPT
[root@client ~]# iptables -I INPUT 2 -p icmp -j ACCEPT
例:查看规则列表
[root@client ~]# iptables -n -L INPUT --line-numbers
例:
[root@client ~]# iptables -D INPUT 3
[root@client ~]# iptables -n -L INPUT
[root@client ~]# iptables -t nat -F
例:
[root@client ~]# iptables -t filter -P FORWARD DROP
[root@client ~]# iptables -P OUTPUT ACCEPT
类别 | 选项 | 用途 |
---|---|---|
添加新的规则 | -A | 在链的末尾追加一条规则 |
-I | 在链的开头(或指定序号)插入一条规则 | |
查看规则列表 | -L | 列出所有的规则条目 |
-N | 以数字形式显示地址、端口等信息 | |
-V | 以更详细的方式显示规则信息 | |
–line-numbers | 查看规则时,显示规则的序号 | |
删除、清空规则 | -D | 删除链内指定序号(或内容)的一条规则 |
-F | 清空所有的规则 | |
设置默认策略 | -P | 为指定的链设置默认规则 |
例:
[root@client ~]# iptables -I INPUT -p icmp -j DROP
[root@client ~]# iptables -A -FORWARD ! -p icmp -j ACCEPT
ps:感叹号表示条件取反
[root@client ~]# iptables -A -FORWARD -s 192.168.1.10 -j REJECT
[root@client ~]# iptables -I INPUT -s 10.10.10.0/24 -j DROP
[root@client ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP
例:
[root@client ~]# iptables -A FORWARD -s 192.168.5.0/24 -p udp --dport 53 -j ACCEPT
[root@client ~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
1、多端口匹配:-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
2、IP范围匹配:-m iprange --src-range IP范围
3、MAC地址匹配:-m mac --mac-source MAC地址
4、状态匹配:-m state --state 连接状态
例:
[root@client ~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
[root@client ~]# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.5.43-192.168.5.46 -j ACCEPT
[root@client ~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
类别 | 条件类型 | 用法 |
---|---|---|
通用匹配 | 协议匹配 | -p 协议名 |
地址匹配 | -s 源地址、-d 目的地址 | |
接口匹配 | -i 入站网卡、-o 出站网卡 | |
隐含匹配 | 端口匹配 | –sport 源端口、–dport 目的端口 |
ICMP类型匹配 | –icm-type ICMP类型 | |
显式匹配 | 多端口匹配 | -m multiport --sports | --dports 端口列表 |
IP范围匹配 | -m iprange --src-range IP范围 | |
MAC地址匹配 | -m mac --mac-source MAC地址 | |
状态匹配 | -m state --state 连接状态 |
局域网主机共享单个公网IP地址接入Internet
源地址转换,Source Network Address Translation
修改数据包的源地址
实现方法:编写SNAT转换挥规则
[root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to-source 218.29.30.31
Centos 7.6、VMware Workstation 15.5
准备三台centos7.6虚拟机,分别作为内网机、防火墙、外网机
分别在内网机及外网机上安装并开启httpd服务,并清空自身的防火墙规则(作为防火墙的虚拟机也要清除规则!):iptables -F
将三台虚拟机的网卡调整为VM1(仅主机模式),其中防火墙要添加双网卡
内网机IP地址为:192.168.100.100
外网机:12.0.0.12
防火墙:(内):192.168.100.1
(外):12.0.0.1
1、在防火墙机上开启数据转发功能
进入配置文件:vi /etc/sysctl.conf
在末行添加以下内容:net.ipv4.ip_forward=1
使配置立即生效:sysctl -p
2、在作为防火墙的虚拟机上添加如下规则
iptables -t nat -I POSTROUTING -s 192.168.100.100 -o ens36 -j SNAT --to-source 12.0.0.1
3、在外网机上查看http服务的访问日志,路径:cat /var/log/httpd/access_log
可以看出访问的地址发生了变化,已经不是192.168.100.100了,而是12.0.0.1
3、到目前为止外网机还不能直接访问内网机,所以要在防火墙上添加如下规则:
iptables -t nat -I PREROUTING -d 12.0.0.1 -i ens36 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.100