一.snat
1.snat原理和作用
NAT策略的原理:
- 源地址转换,Source Network Address Translation
- 修改数据包的源地址
SNAT源地址转换过程:
-
数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
-
当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
-
当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。
2.SNAT策略的配置
SNAT转换前提条件
- 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
- Linux网关开启IP路由转发
2.1Linux网关开启IP路由转发
临时开启:sysctl -w net.ipv4.ip_forward=1
永久开启:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #将此行写入配置文件
sysctl -p #读取修改后的配置,优化内核调优
2.2 SNAT转换1:固定的公网IP地址
-
-A POSTROUTING 指定POSTROUTING链
-
-s 192.168.72.0/24 源地址所处的网段(内网IP)
-
-o ens33 出站网卡
-
-j SNAT
-
--to 12.0.0.2 外网IP
-
--to-source 12.0.0.2-12.0.0.10 外网地址池
2.3 SNAT转换2:非固定的公网IP地址(共享动态IP地址)
二.DNAT原理及应用
1.DNAT策略的原理
-
目标地址转换,Destination Network Address Translation
-
修改数据包的目标地址
2.DNAT源地址转换过程:
-
数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP。
-
当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP。
注:
-
客户机想访问服务器时,访问的是网关地址,由网关去找服务器的内网地址。
-
如果多台服务器使用同一个网关,那么通过不同的端口号来对应不同的服务器。
3.DNAT转换前提条件
- 局域网的服务器能够访问Internet
- 网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #将此行写入配置文件
sysctl -p #读取修改后的配置
4.DNAT转换1:发布内网的Web服务
-
-A PREROUTING //修改目标地址的链
-
-i ens33 //入站网卡
-
-d 12.0.0.254 //数据包的目的地址
-
-p tcp --dport 80 //数据包的目的端口
-
-j DNAT //使用DNAT功能
-
--to //内网服务器IP
5.DNAT转换2:发布时修改目标端口
将公网的IP和端口,转换成内网的IP和端口
发布局域网内部的web服务器,外网主机需使用8080端口进行连接
将12.0.0.254:8080 转换成 192.168.37.10:80
发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
- 将12.0.0.254:250 转换成 192.168.37.10:22
三.REDIRECT转发
REDIRECT,是NAT表的 target,通过改变目标IP和端口,将接受的包转发至同一个主机的不同端口,可用于PREROUTING OUTPUT链
REDIRECT选项:
--to-ports port[-port] 注意: 无需开启 ip_forward
举例:
四.小结
SNAT源地址转换过程(针对客户端):
- 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
- 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
- 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。
DNAT源地址转换过程(针对服务器):
-
数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP。
-
当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP。
-
客户机想访问服务器时,访问的是网关地址,由网关去找服务器的内网地址。
-
如果多台服务器使用同一个网关,那么通过不同的端口号来对应不同的服务器。