snat规则,snat配置

IPtables可以灵活地进行各种网络地址转换(NAT )

网络地址转换主要有SNAT和DNAT两种

SNAT是source network address translation的缩写即源地址目标转换

例如,多个PC使用ADSL路由器共享因特网,每个PC上配置了内部网IP。 当PC接入外部网络时,路由器用路由器的ip替换分组头部中的源地址。 当外部网络的服务器(如网站的web服务器)收到访问请求时,他的日志将记录路由器的ip地址,而不是pc的内部网ip。

这是因为此服务器收到的数据包标头中的“源地址”已经被替换。 所以称为SNAT,是基于源地址的地址转换。

DNAT是destination network address translation的缩写即目标网络地址转换

典型的APP应用包括位于内联网上的web服务器、配置内联网ip、前端有防火墙、配置公共ip以及互联网上的访问者使用公共ip访问此站点访问时,客户端会发送数据包。 此数据包的标头将目标地址写为防火墙的公共ip。 防火墙将此数据包的标头重写一次,将目标地址重写为web服务器的内部网ip,然后将此数据包发送到内部网的web服务器。 这样,数据包就会穿透防火墙,成为从公共ip到内部网ip的访问(即DNAT ),成为基于目标的网络地址转换。

在MASQUERADE、地址伪装和iptables中,效果接近SNAT,但存在一些差异:

SNAT、DNAT、MASQUERADE都是NAT,MASQUERADE是SNAT的特例。

SNAT是指,当从网卡发送分组时,将分组中的发送源地址部分置换为所指定的IP,从而识别为接收端是将分组发送源置换后的IP的主机。

MASQUERADE用发送数据的网卡上的IP替换源IP,因此如果IP不是固定的,例如拨号或通过dhcp分配IP,则必须使用MASQUERADE。

所谓DNAT,是指从网卡发送数据包时,通过变更数据包中的目的地IP来访问a,但由于网关正在进行DNAT,所以将访问a的所有数据包的目的地IP都变更为b时,执行

这是因为路由是按照目的地地址选择的,DNAT是在PREROUTING链上进行的,而SNAT是在发送分组时进行的,因此在POSTROUTING链上进行

但是,使用SNAT时,出口ip的地址范围可以是一个或多个。 例如,以下情况:

以下命令指示将所有10.8.0.0网段的包SNAT发出为192.168.5.3的ip

iptables-tnat-a postrouting-s 10.8.0.0/255.255.255.0-oeth0- js NAT-to-source 192.168.5.3以下命令均适用

iptables-tnat-a postrouting-s 10.8.0.0/255.255.255.0-oeth0- js NAT-to-source 192.168.5.3-192.1

但是,在SNAT的情况下,无论是多少个地址,都必须明确指定要SNAT的ip

如果当前系统使用ADSL动态拨号方式,则每次拨号都会更改出口ip192.168.5.3

而且变化幅度大,不一定是192.168.5.3到192.168.5.5范围内的地址

此时,像现在这样配置iptables会出现问题

因为每次拨号都会更改服务器地址,但iptables规则中的ip不会自动更改

每次地址发生变化时,都必须手动修改iptables,并将规则中的固定ip更改为新ip

这种非常难使用的MASQUERADE是为了应对这种情况而设计的。 他的职责是从服务器的网卡中自动获取当前的ip地址并创建NAT

例如下一个命令:

iptables-tnat-a postrouting-s 10.8.0.0/255.255.255.0-oeth0- jmasquerade

这样配置后,就不需要指定SNAT的目标ip

无论当前eth0出口获得了什么动态ip,MASQUERADE都会自动读取eth0的当前ip地址并通过SNAT出门

这样可以实现很好的动态SNAT地址转换注。

对于MASQUERADE,只需要稍微多一点计算机负载。 因为对于每个匹配的数据包,MASQUERADE必须搜索可用的IP地址,这与SNAT的IP地址不同。 当然,这也有好处。 可以使用通过拨号获得的地址,如PPP、PPPOE和SLIP。 这些地址是由ISP的DHCP随机分配的。 示例:可能需要将访问主机的7979端口映射到8080端口。 也可以完成iptables重定向

修改Iptables以实现iptables-tnat-a prerouting-ptcp—dport 7979-JRE direct—to-ports 8080 NAT映射功能

将外部网接入192.168.75.5上的80端口转发到192.168.75.3:8000端口。 # iptables-tnat-a prerouting-d 192.168.75.5-ptcp– dport 80-jdn at– to-destination 192.168.75.3:8008000000000

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注