Linux

OpenSwan IPSec 階段 #2 並發症

  • February 23, 2017

階段 #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_l​​ife: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

> > > &gt; authby=secret &gt; pfs=yes &gt; auto=add &gt; phase2alg=aes256-sha1;dh22 &gt; keyingtries=3 &gt; ikelifetime=8h &gt; type=transport &gt; left=192.168.1.76 &gt; leftsubnet=192.168.1.0/24 &gt; leftprotoport=0/0 &gt; right=222.222.222.222 &gt; rightsubnet=10.196.0.0/17 &gt; rightprotoport=0/0 &gt; &gt; > >

以下是第二階段必須滿足的另一端提供的規格:

加密算法: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 隧道配置中的唯一問題,但它肯定會解釋格式錯誤的有效負載消息;試一試,如果出現任何進一步的問題,請告訴我們!

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