如何用iptables实现NAT

如何用iptables实现NAT,第1张

NAT有三种SNAT,DNAT和PNAT。

先简单介绍下。SNAT(源地址转换):目标地址不免,改写源地址,实现内网多用户使用同一个公网IP上网的情况。DNAT(目标地址转换):源地址不变重新修改目标地址。PNAT(端口映射):在DNAT基础上,实现内网IP端口对外网监听。

SNAT的实现方式:

先把Linux系统ipv4数据包的转发功能打开,系统就有了路由功能。

[root@localhost ~]# echo 1 >/proc/sys/net/ipv4/ip_forward

添加iptables的nat表项

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -j SNAT --to-source 202.10.xx.xx

表示在postrouting链上,将内网源地址为192.168.11.0/24网段的数据包的源地址都转换为公网IP 202.10.xx.xx。这样SNAT配置完毕,可以测试上网了。做NAT服务器的内网IP 192.168.11.x 就是内网主机需要配置的网关地址。当然纯内网环境下,转换的成的IP也可以是另一个内网网段的IP。

SNAT还有一个常用选项:MASQUERADE。此选项可以用在动态获取IP地址的主机,如家用宽带拨号上网的主机。

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o eth1 -j MASQUEREADE

在这里-o后面的网卡名是指定出去的接口,MASQUEREADE会调用该接口的地址作为转换后的源地址。

DNAT转换不多介绍了,用到的时候不多,格式如下:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 202.10.xx.XX -p tcp –-dport 8080 -j DNAT –-to-destination 192.168.11.128:80

感兴趣的可以在网上搜一下nat原理。

假设某公司申请DDN专线时,电信提供的合法地址为61.138.0.93/30,61.128.0.94/30,公司内部网络地址为192.168.0.0/24,路由器局域口地址192.168.0.254/24,广域口地址61.138.0.93/30,

当192.168.0.1/24这台计算机向INTERNET上的服务器202.98.0.66发出请求,则相应的 *** 作过程如下:

⑴内部主机192.168.0.1/24的用户发出到INTERNET上主机202.98.0.66的连接请求

⑵边界路由器从内部主机接到第一个数据包时会检查其NAT映射表,如果还没有为该地址建立地址转换映射,路由器便决定为该地址进行地址转换,路由器为该内部地址192.168.0.1到合法IP地址61.138.0.93的映射,同时附加端口信息,以区别与内部其他主机的映射。

⑶边界路由器用合法IP地址61.138.0.93及某端口号来替换内部IP地址192.168.0.1和对应的端口号,并转发该数据包。

⑷INTERNET服务器202.98.0.66接到该数据包,并以该包的地址(61.138.0.93)来对内部主机192.168.0.1作出应答。

⑸当边界路由器接受到目的地址为61.138.0.93的数据包时路由器将使用该IP地址、端口号从NAT的映射表中查找出对应的内部地址和端口号,然后将数据包的目的地址转化为内部地址192.168.0.1,并将数据包发送到该主机。对于每一个请求路由器都重复2-5的步骤。

NAT的功能就是指将使用私有地址的网络与公用网络INTERNET相连,使用私有地址的内部网络通过NAT路由器发送数据时,私有地址将被转化为合法注册的IP地址从而可以与INTERNET上的其他主机进行通讯。

NAT路由器被置于内部网和INTERNET的边界上并且在把数据包发送到外部网络前将数据包的源地址转换为合法的IP地址。当多个内部主机共享一个合法IP地址时,地址转换是通过端口多路复用即改变外出数据包的源端口并进行端口映射完成。

就是这个界面中设置。

1、在“外部端口”中输入外网访问端口,比如“8080”。“外部ip地址”默认就是现在的wan地址;

2、在“内部ip地址”中输入内部服务器的ip,比如“192.168.2.8”;

3、在“内部端口”输入内部服务器的端口,比如web服务“80”,具体看你是什么服务,不同服务端口号不同。

4、确定。规则就可以添加到下面的列表中了。ok!

你现在可以在外网,用“wan的ip:8080”访问内网的web服务了。

比如,我把内网的“192.168.2.10”远程桌面端口“3389”映射到外网“xx.xxx.xxx.xxx”的“62222”端口,在世界任何地方都可以用“远程桌面连接”连接“xx.xxx.xxx.xxx:62222”登录内网“192.168.2.10”的远程桌面服务。

你想在外网访问这个路由的设置界面,可以将这个华三路由的LAN(比如是192.168.2.1)的“80”端口映射到外网的某个端口(别用80,用个大些的端口),以后就可以用上面的方法直接访问路由设置了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11423761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存