我对以下情况下的ip数据包stream有疑问。
该场景是:
以下是scheme的图示:
--------------- ---------------- | | | | | client tun0 |----------| client wlan0 | | 10.0.0.2 | | ip not fix | | | | | --------------- ---------------- | | internet | | ---------------- | | | firewall | | (gateway) | | 192.168.1.1 | | | ---------------- | | private network | 192.168.1.0/24 | --------------- ---------------- | | | | | server tun0 |----------| server eth0 | | 10.0.0.2 | | 192.168.1.38 | | | | | --------------- ----------------
我使用了两个非常简单的类似vpn的客户机/服务器程序来读/写两个tun0接口的ip包,并在wlan0和eth0之间build立一个隧道,使得来自10.0.0.2的ip包可以达到10.0.0.1,反之亦然例如可以从10.0.0.1到10.0.0.2运行ftp)。
但是,如果我想使用客户端tun0(10.0.0.2)来浏览网页,http请求将从10.0.0.2开始,并在因特网IP地址(当然不是10.0.0.1)处发送。 在到达服务器tun0(10.0.0.1)之后,http请求(我认为)将被转发到服务器eth0(因为ip_forward处于打开状态,我认为这个转发http请求的源地址仍然是10.0.0.2,纠正我,如果我错了),在那里NAT发生重新包装HTTP请求来自eth0(即源IP地址更改为192.168.1.38,因为我已经运行iptables命令),然后重新打包的http请求通过防火墙(然后是互联网)到达目的地。
当http回复(从网站)到达eth0服务器时,反向NAT应该在那里发生。 我的问题是:
有任何想法吗。 感谢您的任何build议。