一、语法规则
iptables -t 表名(小写)  选项(大写)                            链名(大写)         条件(小写)                      -j 动作(大写)
              raw                   -A(末尾添加)                        PREROUTING        -p(协议名地址匹配)         DROP(丢弃)
             mangle              -I(插入,默认在最前面)        INPUT                    -s(源ip)                          ACCEPT(允许)
             nat                    -D(删除)                               FORWARD            -d(目标地址)                   REJECT(拒接)
             filter                  -L(列出)                                OUTPUT                -i(入站网卡)                    LOG(日志)
                                      -v(列出详细信息)                   POSTROUTING     -o(出战网卡)
                                      --line-numbers(显示行号)     --sport(源端口)
                                     -n(数字化显示)                       --dport(目标端口)
                                     -F(清空规则)                          --tcp-flags(检查范围)
                                    -P(设置默认规则)                     --icmp-type(ICMP类型)
                                                                                       -m multiport --sports (源端口)
                                                                                       -m mutiportt --dports (目端口)
                                                                                       -m iprange --src-rang (IP范围ip1-ip2)
                                                                                       -m mac --mac-source (MAC 地址)
                                                                                       -m state --state (链接状态)
                                                                                       ESTABLISHED(已经建立链接的会话)
                                                                                       NEW(新建立的会话)
                                                                                       RELATED(已经链接的会话相关的会话)
                                                                                      由ENW到ESTABLISHED
                                                                                      由RELATED到ESTABLISHED
使用SNAT和DNAT都必须开启路由功能

SNAT:局域网主机共享单个公网ip上网,隐藏内网主机。通过修改数据包的源IP地址实现
iptables -t nat -A POSTROUTING -s 内网网段  -o  外网网卡  -j MASQUERADE
iptables -t nat -A POSTROUTING -s 内网IP    -o  外网网卡  -j SANT --to-source 外网卡IP
DNAT:发布内部服务器使用,通过修改数据包的目的地址实现,在路由前时机将公网客户机访问网关的数据中目的 修改为内网服务器地址
iptables -t nat -A PREROUTING  -i 外网网卡  -d  外网IP  -p tcp --dport  发布的服务端口 -j  DNAT  --to-destination  内网服务器IP:端口  

二、常用
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT   ##在防火墙规则的尾部追加一条入站规则:开启链接跟踪对本机的状态检测功能。让本机通信并且状态属于ESTABLISHED,RELATED的数据包让它通过。大概意思就是能够快速的转发数据包,而且每个数据包都去进行过虑了。
 Iptables  -A  INPUT  -p tcp  -m  multiport  --dports  20,21,80,443,50000:60000  -j  ACCEPT   ##在防火墙规则的尾部追加一条入战规则:允许20,21,80,443,50000:60000 端口通过
iptables -t nat -A PREROUTING -i eth0 -d 192.168.20.107 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.250:80  ##发布web
iptables -t nat -A PREROUTING -i eth0 -d 192.168.20.107 -p tcp --dport 20:21 -j DNAT --to-destination 192.168.100.250  ##发布ftp
iptables -t nat -A PREROUTING -i eth0 -d 192.168.20.107 -p tcp --dport 3333 -j DNAT --to-destination 192.168.100.250:22  ##发布ssh(发布ftp的时候需要加载ip_nat_ftp,命令是:modprobe ip_nat_ftp,查看是否加载:lsmod |grep ftp)
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 192.168.20.107