直接在服务器上查询dig @8.8.8.8 ebay.com是成功的:
该包的源地址10.146.18.213是eth0的inet地址。而手机上的DNS查询,在服务器eth0抓的包如下:11:11:26.994869 IP 10.146.18.213.50984 > 8.8.8.8.domain: 17471+ A? ebay.com. (26)11:11:26.997250 IP 8.8.8.8.domain > 10.146.18.213.50984: 17471 4/0/0 A 66.135.205.13, A 66.135.205.14, A 66.211.160.87, A 66.211.160.88 (90)
在eth0上出发的包,地址却是VPN上客户端的地址192.168.1.128,这应该是失败的原因,这样的包到都到不了DNS服务器(内核会丢弃吗?)。11:16:11.133115 IP 192.168.1.128.58100 > 8.8.8.8.domain: 57041+ A? www.ebay.com. (30)
后来才想到要做SNAT的,要让VPN用户访问外网这是必须的一步:
以后一定要记得了。虽然忘记了这一步,但是通过冷静分析,通过抓包搞清了问题的原因。iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.146.18.213