OpenSwan IPSec 階段 #2 並發症
階段 #1 ( IKE ) 成功,沒有任何問題(在目標主機上驗證)。
然而,階段 #2 ( IPSec ) 在某些時候是錯誤的(顯然是由於 localhost 上的錯誤配置)。
這應該是一個僅IPSec的連接。我在Debian上使用****OpenSwan。錯誤日誌顯示如下(遠端端點的實際 IP 地址已被修改):
冥王星
$$ 30868 $$: “x” #2: 啟動快速模式 PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK {使用 isakmp#1 msgid:5ece82ee proposal=AES(12)_256-SHA1(2)_160 pfsgroup=OAKLEY_GROUP_DH22}
pluto$$ 30868 $$: “x” #1: 忽略資訊負載,輸入 NO_PROPOSAL_CHOSEN msgid=00000000
pluto$$ 30868 $$: “x” #1: 收到並忽略資訊消息
pluto$$ 30868 $$: “x” #1: peer 提議: 0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
pluto$$ 30868 $$: “x” #3: 響應快速模式提議 {msgid:a4f5a81c}
pluto$$ 30868 $$: “x” #3: 我們: 192.168.1.76<192.168.1.76>$$ +S=C $$
冥王星$$ 30868 $$:“x”#3:他們:222.222.222.222<222.222.222.222>$$ +S=C $$===10.196.0.0/17
冥王星$$ 30868 $$: “x” #3: 從狀態 STATE_QUICK_R0 轉換到狀態 STATE_QUICK_R1
pluto$$ 30868 $$: “x” #3: STATE_QUICK_R1: 發送 QR1,已安裝入站 IPsec SA,期待 QI2
pluto$$ 30868 $$: “x” #1: 忽略資訊負載,輸入 NO_PROPOSAL_CHOSEN msgid=00000000
pluto$$ 30868 $$: “x” #1: 收到並忽略資訊消息
pluto$$ 30868 $$: “x” #3: ISAKMP Hash Payload 的下一個有效載荷類型有一個未知值:97 X pluto$$ 30868 $$: “x” #3: 數據包
pluto中的錯誤有效載荷$$ 30868 $$: | IV後有效載荷格式錯誤
我在NAT後面,這一切都來自wlan2。以下是詳細資訊:
預設通過 192.168.1.254 dev wlan2 proto static
169.254.0.0/16 dev wlan2 scope link metric 1000
192.168.1.0/24 dev wlan2 proto kernel scope link src 192.168.1.76 metric 2
ipsec verify的輸出:
檢查您的系統以查看 IPsec 是否已正確安裝和啟動:
版本檢查和 ipsec on-path
$$ OK $$
Linux Openswan U2.6.37/K3.2.0-24-generic (netkey)
檢查核心中的 IPsec 支持 $$ OK $$
SAref 核心支持 $$ N/A $$
NETKEY:測試 XFRM 相關的 proc 值 $$ OK $$
$$ OK $$
$$ OK $$
檢查 pluto 是否正在執行 $$ OK $$
Pluto 在 udp 500 上偵聽 IKE $$ OK $$
Pluto 在 udp 4500 上監聽 NAT-T $$ OK $$
找到兩個或更多介面,檢查 IP 轉發 $$ OK $$
檢查 NAT 和 MASQUERADEing $$ OK $$
檢查“ip”命令 $$ OK $$
檢查 /bin/sh 不是 /bin/dash $$ WARNING $$
檢查“iptables”命令 $$ OK $$
機會加密支持 $$ DISABLED $$
這就是我執行ipsec auto –up x時發生的情況:
104 “x” #1: STATE_MAIN_I1: 啟動
003 “x” #1: 收到供應商 ID 有效負載
$$ RFC 3947 $$方法設置為=109
106“x”#1:STATE_MAIN_I2:發送 MI2,期待 MR2
003“x”#1:收到供應商 ID 有效負載$$ Cisco-Unity $$
003 “x” #1: 收到供應商 ID 有效載荷$$ Dead Peer Detection $$
003 “x” #1: 忽略未知的供應商 ID 負載$$ 502099ff84bd4373039074cf56649aad $$
003 “x” #1: 收到供應商 ID 有效載荷$$ XAUTH $$
003 “x” #1: NAT-Traversal: 結果使用 RFC 3947 (NAT-Traversal): 我是 NATed
108 “x” #1: STATE_MAIN_I3: 發送 MI3,期待 MR3
004 “x” #1: STATE_MAIN_I4: ISAKMP SA 建立{auth=OAKLEY_PRESHARED_KEY cipher=aes_128 prf=oakley_sha group=modp1024}
117 “x” #2:STATE_QUICK_I1:啟動
010 “x” #2:STATE_QUICK_I1:重傳;將等待 20 秒響應
010 “x” #2: STATE_QUICK_I1: retransmission; 將等待 40 秒以響應
031“x”#2:最大重傳次數 (2) 已達到 STATE_QUICK_I1。對我們的第一個快速模式消息沒有可接受的響應:也許對等體不喜歡提議
000 “x” #2: 開始鍵控嘗試最多 3 次中的第 2 次,但釋放重擊
來自ipsec auto –status的更多調試資訊:
000 使用核心介面:netkey
000 interface lo/lo ::1
000 interface wlan2/wlan2 192.168.1.76
000 interface wlan2/wlan2 192.168.1.76
000 %myid = (none)
000 debug raw+crypt+parsing+emitting+control+lifecycle +klips+dns+oppo+controlmore+pfkey+nattraversal+x509+dpd+oppoinfo
000
000 virtual_private (%priv):
000 - 允許 2 個子網:10.196.0.0/17、192.168.1.0/24
000 - 不允許 0 個子網:
000警告: virtual_private= 中不允許的子網為空。如果你有
000 個內部使用的私有地址空間,它應該被排除在外!
000
000 stats db_ops: {curr_cnt, total_cnt, maxsz} :context={0,4,36} trans={0,4,1536} attrs={0,4,2048}
000
000 “x”: 192.168.1.0/24===192.168.1.76
$$ +S=C $$…222.222.222.222<222.222.222.222>$$ +S=C $$===10.196.0.0/17;未佈線;eroute 所有者:#0
000 “x”: myip=unset; hisip=未設置;
000 “x”: ike_life: 28800s; ipsec_life:28800s;rekey_margin:540s;rekey_fuzz:100%;密鑰嘗試:3
000 “x”:策略:PSK+ENCRYPT+PFS+UP+IKEv2ALLOW+SAREFTRACK+lKOD+rKOD;優先:24,17;介面:WLAN2;
000“x”:dpd:動作:清除;延遲:0;超時:0;
000 “x”:最新的 ISAKMP SA:#0;最新的 IPsec SA:#0;
000 “x”:需要 ESP 算法:AES(12)_256-SHA1(2)_000;pfsgroup=DH22(22); flags=-strict
000 “x”:載入的 ESP 算法:AES(12)_256-SHA1(2)_160
來自**/var/log/auth.log**的更多調試資訊(plutodebug=“all” ) :
冥王星
$$ 26439 $$: | 對等客戶端是子網 0.0.0.0/0
pluto$$ 26439 $$: | 對等客戶端協議/埠為 0/0
pluto$$ 26439 $$: | 我們的客戶是子網 0.0.0.0/0
pluto$$ 26439 $$: | 我們的客戶端協議/埠是 0/0
pluto$$ 26439 $$: “x” #1: peer 提議: 0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
pluto$$ 26439 $$: |
以 x pluto開頭的 find_client_connection$$ 26439 $$: | 尋找 0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0
冥王星$$ 26439 $$: | 具體檢查 sr#0 192.168.1.0/24 -> 10.196.0.0/17
pluto$$ 26439 $$: | match_id a=222.222.222.222
冥王星$$ 26439 $$: | b=222.222.222.222
冥王星$$ 26439 $$: | 結果匹配
冥王星$$ 26439 $$: | 用 a=(empty) b=(empty)
pluto呼叫的trusted_ca$$ 26439 $$: | fc_try 嘗試 x:0.0.0.0/0:0/0 -> 0.0.0.0/0:0/0 與 x:192.168.1.0/24:0/0 -> 10.196.0.0/17:0/0
pluto$$ 26439 $$: | 我們的客戶(192.168.1.0/24)不在our_net(0.0.0.0/0)
冥王星$$ 26439 $$: | fc_try 以無結尾$$ 0 $$
冥王星$$ 26439 $$: | fc_try x 沒有給出
pluto$$ 26439 $$: | find_host_pair:與 192.168.1.76:500 222.222.222.222:500
pluto相比$$ 26439 $$: | 檢查主機對 192.168.1.0/24 -> 10.196.0.0/17 未找到
pluto$$ 26439 $$: |
以 d = none pluto結尾$$ 26439 $$: | 使用(一些東西 - 希望我們或他們被 NAT 的 IP)用於傳輸模式連接“x”
我相應地在ipsec.conf中啟用了****NAT遍歷。以下是與相關連接相關的設置:
2.0版
配置設置
> > plutoopts="–perpeerlog"
> > plutoopts="–interface=wlan2"
> > dumpdir=/var/run/pluto/
> > nat_traversal=yes
> > virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4 :172.16.0.0/12
> > oe=off
> > protostack=netkey > > >連接x
> > >
> authby=secret > pfs=yes > auto=add > phase2alg=aes256-sha1;dh22 > keyingtries=3 > ikelifetime=8h > type=transport > left=192.168.1.76 > leftsubnet=192.168.1.0/24 > leftprotoport=0/0 > right=222.222.222.222 > rightsubnet=10.196.0.0/17 > rightprotoport=0/0 > >
> >以下是第二階段必須滿足的另一端提供的規格:
加密算法:AES(128 或 256 位)
雜湊算法:SHA
local ident1 (addr/mask/prot/port): (10.196.0.0/255.255.128.0/0/0)
local ident2 (addr/mask/prot/port) : (10.241.0.0/255.255.0.0/0/0)
遠端身份 (addr/mask/prot/port): (xxxx/xxxx/0/0) (內部網路或本地主機)
安全關聯壽命: 4608000 KB/3600 秒
PFS:DH組2
那麼,最後,我遇到的問題可能是什麼原因?謝謝你。
您還需要讓遠端端在其連接端也啟用 NAT-T。
IPSec 通信對整個數據包進行加密簽名 - 對 IP 標頭的任何更改都會使該簽名無效。NAT 通過重寫源和/或目標 IP 欄位來工作;在連接的任一端都有 NAT 意味著每個數據包在傳輸過程中都會更改標頭;離開
192.168
網路的數據包改變源,入站數據包改變目標。NAT-T 通過將整個 ESP 數據包封裝在一個新的 UDP 數據包中來抵消這種情況。UDP 數據包可以安全地對其標頭進行修改,以滿足任何 NAT 設備的要求,而 ESP 有效負載將使整個行程保持不變。遠端節點需要啟用此功能以保護它們發送的數據包免受 NAT 修改的影響,並且你們都需要允許 UDP 埠 4500。
這可能不是 VPN 隧道配置中的唯一問題,但它肯定會解釋格式錯誤的有效負載消息;試一試,如果出現任何進一步的問題,請告訴我們!