通过虚拟networking接口执行NAT

简短版本:有没有特别的设置让NAT在Linux的虚拟networking接口上正常工作?

我正在运行一个Linux(2.6.39-2-486 Debian版本)作为NAT服务器。 它有一个真实的networking接口eth0,它连接到外部,一个虚拟eth0:0的地址为192.168.42.2,netmask / 24到内部networking。 里面有几台电脑通过这个盒子连接到互联网(默认网关设置为192.168.42.2),其防火墙设置为(为debugging目的而设置的默认转发策略):

iptables -F iptables -A INPUT -j ACCEPT iptables -A OUTPUT -j ACCEPT iptables -P FORWARD DROP iptables -A FORWARD -s 192.168.42.0/24 -j ACCEPT iptables -A FORWARD -d 192.168.42.0/24 -j ACCEPT iptables -t nat -F iptables -t nat -A POSTROUTING -s 192.168.42.0/24 '!' -d 192.168.42.0/24 -j MASQUERADE 

大多数时候,这个设置工作得很好。 SSH,HTTP,其他stream量的作品。 但是,连接到一些受SSL保护的站点将在连接后无限期阻止,即使尝试直接从服务器运行wget时连接也是如此。 其他的SSL站点工作得很好,但是。 例:

 client:~> wget -dv https://use.typekit.com/qqh6jah.js Setting --verbose (verbose) to 1 DEBUG output created by Wget 1.12 on linux-gnu. --2011-07-24 15:59:14-- https://use.typekit.com/qqh6jah.js Resolving use.typekit.com... 68.232.35.119 Caching use.typekit.com => 68.232.35.119 Connecting to use.typekit.com|68.232.35.119|:443... connected. Created socket 3. Releasing 0x08ccd160 (new refcount 1). Initiating SSL handshake. 

有什么想法发生在这里? 我已经玩了不同的-j日志设置,但缺乏启发select正确的日志logging,以查看出了什么问题。

最好的方法是在NAT盒eth0接口上获取问题的tcpdump,这对于查看DNAT规则是否按预期行事很有帮助。 另外,mangle / raw表是空的,对吧?

我打赌你使用PPP连接,并没有设置TCP MSS