Linux

偽裝 IP 讓網際網路在 VPN 上執行

  • June 22, 2012

我在 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]

ppt日誌:

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.

您沒有推送預設網關

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 地址,否則用那個替換它。

引用自:https://serverfault.com/questions/400608