nat

自己有个电脑通过dnat的方式进行了映射。然后人说这样你不能获取到实际访问的ip地址。大体访问是这样的:

这里可以可以看到我的电脑是通过wifi连接的ap来进行的。 于是我做了一个端口映射9000到我电脑的9000端口。

这是从我本机的抓包,可以看到,这里明显是可以看到远程电脑的公网ip的,而我们可以看下这里的source mac address其实是我的ap的mac address。
这样我回包的时候就直接回这个mac address就行了。

这个可以做一个猜测,ap上有它底下所有设备mac address的映射。

而从远程的服务器抓包来看,这里就不会存对端的mac address,毕竟这就是直接的3层通信了。

那么问题来了,如果这里是两级nat,那还能获取到公网ip吗?

当然可以啊,只要两级nat之间知道路由是怎么走的就明显可以的啊。

因为所有的这种走向都是修改dst address啊,不会修改src的,不然回包就不知道走了。 而路由协议里已经有指定了,你要去到哪里应该走哪个下一跳地址。