我在 debian-squeeze 服务器上成功设置了 pptp VPN 服务器,我可以从 Windows 7 连接到它,但 ping 任何外部主机(如 google.com)失败。ping 10.0.0.1 或 10.0.0.10 可以正常工作。
到目前为止我已经尝试了很多方法,但没有任何效果。我做错了吗?
我设立pptpd
了;
ms-dns 8.8.8.8
ms-dns 8.8.4.4
localip 10.0.0.1
remoteip 10.0.0.10-100
添加了 iptable 规则;
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT
已net.ipv4.ip_forward=1
启用/etc/sysctl.conf
并加上伪装;
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -o ppp0 -j MASQUERADE
有人能发现错误吗?
消息日志:
Jun 20 15:25:01 server1 pppd[6089]: pppd 2.4.5 started by root, uid 0
Jun 20 15:25:01 server1 pppd[6089]: Using interface ppp0
Jun 20 15:25:01 server1 pppd[6089]: Connect: ppp0 <--> /dev/pts/2
Jun 20 15:25:05 server1 pppd[6089]: local IP address 10.0.0.1
Jun 20 15:25:05 server1 pppd[6089]: remote IP address 10.0.0.10
调试日志:
Jun 20 15:24:47 server1 pptpd[6053]: CTRL: Reaping child PPP[6054]
pptpd 日志:
Jun 20 15:25:01 server1 pptpd[6088]: CTRL: Client 8X.XX.2XX.X4 control connection started
Jun 20 15:25:01 server1 pptpd[6088]: CTRL: Starting call (launching pppd, opening GRE)
Jun 20 15:25:04 server1 pptpd[6088]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
Linux服务器上的ifconfig:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.1 P-t-P:10.0.0.10 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1400 Metric:1
RX packets:156 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:16390 (16.0 KiB) TX bytes:137 (137.0 B)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:29264 errors:0 dropped:0 overruns:0 frame:0
TX packets:30152 errors:0 dropped:88 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4129198 (3.9 MiB) TX bytes:25084183 (23.9 MiB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:1X9.XX.1XX.XX9 P-t-P:1X9.XX.1XX.XX9 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
Windows 客户端上的 ipconfig:
PPP adapter Chicago:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 10.0.0.10
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 0.0.0.0
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::dc99:4aef:5221:b5e3%11
IPv4 Address. . . . . . . . . . . : 192.168.1.102
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
Tunnel adapter isatap.{290FC5BA-1A1F-48E5-9FAA-621E96CF4AED}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter Teredo Tunneling Pseudo-Interface:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2001:0:5ef5:79fd:2c53:3789:f5ff:fff5
Link-local IPv6 Address . . . . . : fe80::2c53:3789:f5ff:fff5%13
Default Gateway . . . . . . . . . : ::
Tunnel adapter isatap.{A22A1F34-B6D4-4BD7-BCA4-FAECB71D2D14}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
tracert -d www.google.com
在客户端:
Tracing route to www.l.google.com [74.125.132.105]
over a maximum of 30 hops:
1 117 ms 121 ms 117 ms 10.0.0.1
2 * * * Request timed out.
3 * * * Request timed out.
答案1
您没有推动默认网关
PPP 适配器芝加哥:
连接特定的 DNS 后缀 . : IPv4 地址 . . . . . . . . . . . . : 10.0.0.10 子网掩码 . . . . . . . . . . . . : 255.255.255.255 默认网关 . . . . . . . . . : 0.0.0.0
您需要使其指向 10.0.0.1 而不是 0.0.0.0
如果仍然不起作用,请尝试
iptables -t 过滤器 -F
要验证是否是防火墙阻止了流量,请记住规则的顺序很重要
编辑:
我看到你的 NAT 行如下:
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -o ppp0 -j MASQUERADE
错了,ppp0 是 VPN 接口,你需要在 WAN 接口上进行 NAT。我从来没用过那个伪装东西……我总是这样进行 NAT:
iptables -t nat -A POSTROUTING -j SNAT -s 10.0.0.0/16 --to-source 1X9.XX.1XX.XX9
我猜 1X9.XX.1XX.XX9 是您的公共 IP 地址,否则用该地址替换它。