现在对192.168.241.6的SSH服务的请求也转给192.168.20.2:
此时本机也有SSH服务,但是要转发给内网,到底谁生效呢?转发内网的生效,因为进来之后无论本机有没有监听22号端口我们已经将其目标地址改过了,就不会交给本机了,所以本机即便监听了22号端口也没有用。
在Windows端使用ssh客户端测试:
接下来演示端口映射的效果:
假设内网主机压根就不监听在我们所期望的监听的端口上,但是外网访问时却依然可以请求这个端口。
在内网将WEB服务改为监听在8080端口:
在外网请求时,此时无法请求:
映射:
外网请求:
SNAT的MASQUERADE:
再回到SNAT上,再想一个问题,有时候在互联网上访问的时候,我们可能会遇到这种现状,我们互联网地址有一个外网地址,但是是ADSL拨号的。SNAT是用来代理内网主机或者用来能够承载内网主机访问互联网的,但是我们的外网的地址,如刚才使用的—to-source指明为192.168.241.6,但是192.168.241.6是一个既定地址,如果在互联网上将来我们将来上网时用到的是ADSL拨号的IP地址是经常发生改变的,这时候怎么办呢?
那此时有一个专门的TARTGET叫MASQUERADE(地址伪装),它能够自动找一个适合的外网地址作为源地址转换时自动使用的源地址(自动转换为的源地址)。
演示如下:
仍然是代理内网地址,让内网主机访问Remote Host。刚才做了SNAT,所以是可以访问的,但是假如说我们外网192.168.241.6的地址是经常发生变化的,我们没办法使用--to-source确定到某个地址上,可以做如下操作:
测试:
虽然我们没有给它改为源地址,它也一样能够找到一个合适的源地址对其进行转换的,而这种机制就叫做MASQUERADE。
总结