[Linux] iptables SNAT DNAT
Contents
Linux Iptables SNAT DNAT
任何一个IP数据包中,都有Source IP Address与Destination IP Address这两个字段, 路由器根据这两个字段来判定数据包是由什么地方发过来的,将要发到什么地方去。 而iptables的DNAT与SNAT就是根据这个原理,对Source IP Address与Destination IP Address进行修改。 通过SNAT和DNAT可以使内网和外网进行相互通讯。
SNAT
SNAT(Source Network Address Translation,源地址转换)源映射。 SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。
示例将内网请求转发到可上网机器访问公网
|
|
将内网192.168.10.0/24这个IP段的请求转发到192.168.1.18这台可上网机器.
示例公网ip主机(master)上配置:
- 确保master可以访问网络:
ping www.baidu.com
测试 - 执行如下命令,查看Linux操作系统的IP转发功能是否已开启。
|
|
结果:1为开启,0为关闭,默认为0。
- 修改/etc/sysctl.conf文件net.ipv4.ip_forward = 1。
|
|
- 执行如下命令,使修改生效。
|
|
- 配置SNAT。 执行如下命令,允许网段(例如:172.18.73.0/20)内所有云服务器内访外配置。
|
|
172.18.73.36 为当前主机(master)内网ip, 6. 查看nat配置
|
|
DNAT
DNAT(Destination Network Address Translation,目的地址转换) 目的映射。 DNAT就是指数据包从网卡发送出去的时候,修改数据包中的目的IP。
示例将请求转发到内网机器上
|
|
把所有通过eth0这个网卡发往地址39.156.69.79的包都转发到局域网中192.168.1.13这台机器上
|
|
使用–string参数将匹配到baidu.com地址的请求转到局域网192.168.1.10这台机器上.