一、iptables小技巧

# -h 查看帮助
iptables -m state -h
iptables -p icmp -h

# 自动获取ip作为NAT地址
-j MASQUERADE


二、iptables实战

# 配置说明
#  网卡接口 eth0
#  本机ip 192.168.0.1
#1 服务器禁止访问外网
#2 服务器可以ping 192.168.0.253
#3 管理员192.168.0.252可以连接服务器的ssh
#4 接受管理员的ping请求
#4 服务器有Apache服务,端口80,且所有用户都可访问
#5 需要为80端口配置抵御DDOS攻击规则

# 本实战例子采用“通”策略

# 清空iptables规则
-F
# 清除所有自定义的Chain
-X

# 更改默认策略
-P INPUT DROP
-P OUTPUT DROP
-P FORWARD ACCEPT

# 必做操作
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 记得添加允许ssh数据包流入规则(只允许管理员(192.168.0.252))
-I INPUT -p tcp --dport 22 -s 192.168.0.252 -j ACCEPT

# 这里可以新建一个chain,专门用来存放icmp规则
-N icmp-chain
-I INPUT -p icmp -g icmp-chain
-I OUTPUT -p icmp -g icmp-chain
# -i/-o eth0 单网卡时可加可不加,这里作为输入输出接口来匹配
-I icmp-chain -o eth0 -p icmp -d 192.168.0.253 --icmp-type 8 -j ACCEPT
-I icmp-chain -i eth0 -p icmp -s 192.168.0.252 --icmp-type 8 -j ACCEPT
-I icmp-chain -o eth0 -p icmp -d 192.168.0.252 --icmp-type 0 -j ACCEPT

# 开放80
-I INPUT -p tcp --dport 80 -j ACCEPT


三、nat表简单运用

子网192.168.10.128/25需要访问互联网,公网ip随时会发生变更

服务器连接内网的网口为eth2,公网网口eth0

禁止子网访问除59.127.36.0/24以外的网站


# 需要先开启路由转发:
echo 1 >/proc/sys/net/ipv4/ip_forward

# 配置一下转发NAT地址
iptables -t nat -I POSTROUTING -o eth2 -s 192.168.10.128/25 -j MASQUERADE

# 禁止子网访问除59.127.36.0/24以外的网站
iptables -I FORWARD -o eth0 -p tcp ! -d 59.127.36.0/24 --dport 80 -j DROP