iptables 基础操作
  1. 环境初始化
    # 开启白名单后,允许自身对外的连接
    iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # 白名单设置
    iptables -P INPUT DROP
    
  2. 源NAT(SNAT)
    更改所有来自192.168.1.0/24的数据包的源IP地址为123.4.5.100

    # 指定源IP形式
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 123.4.5.100
    
    # 不指定源IP
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    
  3. 目的NAT(DNAT)
    更改所有来自192.168.1.0/24的数据包的目的ip地址为123.4.5.100

    iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to 123.4.5.100
    
  4. 单个端口转发

    端口转发 tcp模式:将访问本机1122端口数据包转发给192.168.66.2:5566

    iptables -t nat -A PREROUTING -p tcp --dport 1122 -j DNAT --to-destination 192.168.66.2:5566
    
  5. 端口转发 udp模式:将访问本机2233端口数据包转发给192.168.66.2:4455
    iptables -t nat -A PREROUTING -p udp --dport 2233 -j DNAT --to-destination 192.168.66.2:4455
    
  6. 设置mss钳制,解决由于mtu问题导致的网页无法打开问题
    # 自动MSS,假设PPPOE虚接口是pppoe0
    iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --clamp-mss-to-pmtu
    ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --clamp-mss-to-pmtu
    
    # 手动指定MSS,假设PPPOE虚接口是pppoe0
    iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --set-mss 1452
    ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --set-mss 1432
    
  7. iptables 放通端口协议

    放通icmp协议

    iptables -A INPUT -p icmp -j ACCEPT
    

    放通特定tcp端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    

    放通好几个端口,加multiport参数

    iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
    
  8. 查看nat连接数
    cat /proc/net/nf_conntrack | wc -l
    
上一篇
下一篇