# IPtables实现nat方式的流量转发

- Link: https://www.xuepaijie.com/html/skill/devops/709.html
- Published: 2016-11-10T16:33:40+08:00
- Author: Admin

NAT可以方便的完成这种流量穿通功能，即把外网数据通过NAT(中转设备)来穿透进内网，内
网数据通过NAT(中转设备)穿透出外网。

那linux下iptables如何实现nat转发？这里将以Debian7主机下的测试为例。

1、开启IP_FORWARD

    ```html;
    vi /etc/sysctl.conf
    #在文件末添加以下一行（如已有则不必添加，直接将注释解除即可）
    net.ipv4.ip_forward=1
    ```

2、使用IPTABLES，转发TCP、UDP流量

    ```html;
    #TCP
    iptables -t nat -A PREROUTING -p tcp --dport 映射地址 -j DNAT --to-destination 目标地址:目标端口
    iptables -t nat -A POSTROUTING -p tcp -d 目标地址 --dport 目标端口 -j SNAT --to-source 映射地址

    #UDP
    iptables -t nat -A PREROUTING -p udp --dport 映射地址 -j DNAT --to-destination 目标地址:目标端口
    iptables -t nat -A POSTROUTING -p udp -d 目标地址 --dport 目标端口 -j SNAT --to-source 映射地址

    #其中“目标地址:目标端口”是目标服务器的IP与端口，“映射地址”是本机的公网IP。
    ```

3、保存IPTABLES

    ```html;
    #这里使用 iptables-save 保存iptables配置，也可以使用其他方法保存。
    iptables-save > /etc/iptables.up.rules
    ```

需要注意的是，并非所有服务器环境都支持UDP转发，具体操作过程中需要根据实际情况。
