
我花了一上午的時間嘗試在 Debian Squeeze 伺服器上使用 Openswan 和 xl2tpd 配置 L2TP/IPsec VPN,以供 iOS 和 Mac 用戶端混合使用。我正在嘗試使用預共享密鑰進行設置,以使事情變得簡單。
iPhone 連線並開始建立 VPN,然後卡住並在中途失敗。在擺弄許多參數並仔細檢查所有內容後,我無法找出問題所在。
/var/log/auth.log
這是卡住之前的最後一條日誌訊息:
pluto[30733]: "L2TP-PSK"[5] 166.147.96.226 #5: STATE_QUICK_R2: IPsec SA established tunnel mode {ESP=>0x0659cf9f <0xc3c2f68c xfrm=AES_256-HMAC_SHA1 NATOA=none NATD=166.147.96.226:10682 DPD=enabled}
然後大約 30 秒後,iPhone 放棄,這顯示在auth.log
:
pluto[30733]: ERROR: asynchronous network error report on br1 (sport=4500) for message to 166.147.96.226 port 10682, complainant 166.147.96.226: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)]
這是什麼意思?伺服器是否無法聯繫客戶端,或者客戶端是否無法建立額外的連接,並透過它可以建立的 IPsec 連接傳遞此錯誤?
不幸的是,我正在 AT&T 的蜂窩網路上使用 iPhone 進行測試,因為我位於 Wi-Fi 網路內,我想在其中建立 VPN。 AT&T 會阻止 VPN 流量嗎?
我知道 IPsec 驗證正在工作,因為如果我更改或刪除 中的行/etc/ipsec.secrets
,連接會更快失敗,並且我看不到這些日誌行。
我相信防火牆允許 UDP 連接埠 500 和 4500 以及 ESP 協議,因為如果我阻止這些,連接也會更快失敗。
/etc/ipsec.conf
連接部分:
conn L2TP-PSK
authby=secret
pfs=no
rekey=no
keyingtries=3
dpddelay=30
dpdtimeout=120
dpdaction=clear
compress=yes
left=%defaultroute
leftprotoport=udp/1701
right=%any
rightprotoport=udp/0
auto=add
/etc/ipsec.secrets
VPN-SERVER-PUBLIC-IP %any: PSK "mysecretishere"
/etc/xl2tpd/xl2tpd.conf
[global] ; Global parameters:
access control = no
rand source = dev
[lns default] ; Our fallthrough LNS definition
ip range = 192.168.1.120-192.168.1.127
local ip = 192.168.1.119
require chap = yes
refuse pap = no
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tp
length bit = yes
/etc/ppp/options.l2tp
ipcp-accept-local
ipcp-accept-remote
ms-dns 192.168.1.1
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
plugin pppol2tp.so
require-mschap-v2
答案1
AT&T 似乎阻止傳入的 UDP 封包(不讓他們穿越NAT),因此設定L2TP/IPsec將非常困難。我認為你被 PPTP 困住了。
答案2
這個錯誤就是你的線索。
ERROR: asynchronous network error report on br1 (sport=4500) for message to 166.147.96.226 port 10682, complainant 166.147.96.226: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)
我以前見過,每次都是因為主機伺服器或遠端客戶端的網路/防火牆阻止了 ipsec 封包。如果它是用戶控制的防火牆或路由器,這是一個簡單的修復(啟用 IPSEC),但如果它超出您的控制,您就運氣不佳,必須使用不同的協議。有些人說更改 left=17/%any 但這對我來說從來沒有用過(在極少數情況下,客戶端可能很聰明,並嘗試使用可能不會被阻止的不同連接埠)。