iptables经典案例

1.作为双网卡网关,为内网接入因特网
固定公网IP:

  
  
  
  
  1. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to 88.88.88.88 

动态IP:

  
  
  
  
  1. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE 

 这种方法其实是通用的,192.168.1.0/24是内网地址,最好添加上-o eth0指定出口网卡,以达到精确匹配并不影响其他数据包。

2.端口映射

  
  
  
  
  1. iptables -t nat -A PREROUTING -d 88.88.88.88 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.21:8080 

--to-destination可以简写为--to。这条规则还是应用在网关上的,如果内网的web服务需要对外公开,那么就需要加上这条规则

3.针对本机的端口跳转(本机作为Web或者Squid的应用)

  
  
  
  
  1. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 

把80的请求跳转到3128端口

4.开启ping响应

  
  
  
  
  1. iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT 

5.禁ping

  
  
  
  
  1. iptables -A INPUT -p icmp --icmp-type 8 -j REJECT --reject-with icmp-host-unreachable 

可以直接DROP掉(常规做法),这里采用REJECT是反馈了所谓的“拒绝理由”:
icmp-host-unreacheable
icmp-net-unreacheable
icmp-port-unreachable(默认)
icmp-proto-unreachable
icmp-net-prohibited
icmp-host-prohibited

6.状态检测允许

  
  
  
  
  1. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

7.封IP

  
  
  
  
  1. iptables -A INPUT -s 172.16.1.0/24 -j DROP 

这当然的最简单的应用了,具体可根据实际环境规划

8.开放常规端口

  
  
  
  
  1. iptables -A INPUT -p tcp -m multiport --ports 20,21,22,25,53,80,8080,110,443 

需要注意的是关于DNS的53号端口,要同时开放tcp和udp两个协议的53端口,否则无法解析域名

9.IP与MAC地址的绑定

  
  
  
  
  1. iptables -N IP2MAC

  2. iptables -A FORWARD -i eth1 -o eth0 -j IP2MAC

  3. iptables -A IP2MAC -s 192.168.1.11 -m mac --mac-source XX:XX:XX:XX:XX:XX -j RETURN 

  4. iptables -A IP2MAC -s 192.168.1.12 -m mac --mac-source YY:YY:YY:YY:YY:YY -j RETURN 

  5. iptables -A IP2MAC -s 192.168.1.13 -m mac --mac-source ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -j RETURN 

  6. iptables -A IP2MAC -j DROP 

需要注意的是自定义链是不能设置默认规则的。另外代码中很明显eth1是内网卡,eth0的外网卡 

10.期待你的分享和添加

你可能感兴趣的:(iptables,iptables案例)