一 三个表
1 filter
1) INPUT
2) OUTPUT
3) FORWARD
2 nat
1) PREROUTING
2) POSTROUTING
3) OUTPUT
3 mangle
二 iptables 语法
iptables -AI 链 INPUT|OUTPUT|FORWARD|LOG -io 网络接口 -p 协议 -s 来源ip/网段 --sport 端口范围
-d 目标ip/网段 --dport 端口范围-j ACCEPT|DROP
-AI A 新增 I 插入
-io 网络接口 i 进入的接口 需要和INPUT链配合 o 传出的接口 需要和OUTPUT链配合
-p 协议 tcp udp icmp all
-s -d 主机 192.168.0.100 网段192.168.0.0/24,192.168.0.0/255.255.255.0 加上!表示不包含
--dport --sport 连续端口1024:2048 不连续端口 024,1026
iptables 状态
iptables -A INPUT -m state --state 状态
-m iptables模块 state: 状态模块 mac:
--state: 数据包的状态 INVALID: 无效 ESTABLISHED: 已经成功连接 NEW: 想要新建立连接 RELATED: 表示数据包与发出去的数据包有关
三 常见配置
1)允许所有的本机发出去的相关请求的相关数据包可以进入
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
针对mac开放
iptables -A INPUT -m mac --mac--source aa:bb:cc:dd:ee:ff -j ACCEPT
2)nat 设置
echo 1 > /proc/sys/net/ipv4/ip_forward
snat
如果有多个ip断,可以如下设置
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 61.61.61.61
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 61.61.61.62
如果只是简单的内网外网,可以如下设置
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
dnat
外部80端口到内部192.168.1.100的端口转换
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.1.100:80
将本机的80端口重定向到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
ip对ip的转换
iptables -A FORWARD -s 192.168.1.1 -j ACCEPT
iptables -A FORWARD -d 192.168.1.1 -j ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -d 1.1.1.2 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A POSTROUTING -s 192.168.1.1 -j SNAT --to-source 61.61.61.63