Ipsec

在兩台主機之間的 LAN 上設置 IPSEC (OpenBSD)

  • February 7, 2021

試圖在 LAN 上的兩台主機之間使用 IPSEC。不涉及 VPN

使用 OpenBSD 5.8(在 VirtualBox 中)。我更喜歡使用 OpenBSD 對 IPSEC 和密鑰交換的內置支持,而不是第三方。

兩台主機:(10.0.2.10主機“A”)和10.0.2.11(主機“B”)

他們可以在嘗試設置 IPSEC 之前相互 ping/ssh。

更新:我想也許 OpenIKED (IKE v2) 不支持transport模式,所以我也會接受 isakmp (IKE v1) 的答案

將 A複製/etc/iked/local.pub到 B 將 B/etc/iked/pubkeys/ipv4/10.0.2.10

複製/etc/iked/local.pub到 A/etc/iked/pubkeys/ipv4/10.0.2.11

雙方:

echo "ikev2 esp from any to any" > /etc/iked.conf

chmod 640 /etc/iked.conf

echo "ipsec=YES" > /etc/rc.conf.local

echo "iked_flags=" >> /etc/rc.conf.local

檢查配置:

/sbin/iked -n
Configuration OK

我很困惑下一步該做什麼。我想我需要設置/etc/ipsec.conf,但我只找到了 IKEv1 文件。

重新啟動兩台機器。沒有錯誤。說 iked 守護程序已啟動。如果我將公鑰重命名為任何內容,仍然可以相互 ping 通,因此 IPSEC 似乎無法正常工作。

  1. 我還需要配置什麼?
  2. 是否有 IPSEC 和 iked 的日誌,如果有,我在哪裡可以找到它們?
  3. 如何判斷 IPSEC 是否在配置後工作,而不查看機器之間的數據包?從 B ping 到 A,在 A 上執行 tcpdump。應該在 tcpdump 中看到“esp”和“spi”

更新:我讓 IPSEC 使用手動密鑰交換

/etc/ipsec.conf:

# .10 is source, .11 is destination
flow esp from 10.0.2.10 to 10.0.2.11 type require

esp transport from 10.0.2.10 to 10.0.2.11 \
spi 0xCAFEBABE:0xCAFEBABE \
authkey 0x64CHARHEX:0x64CHARHEX \
enckey 0x64CHARHEX:0x64CHARHEX

十六進制必須全部大寫

chmod 640 /etc/ipsec.conf

ipsecctl -F (delete config)
ipsecctl -f /etc/ipsec.conf (load config)
ipsecctl -s all -v (show config)

我更喜歡使用 IKEv2 的自動鍵控。我能做些什麼?

像書呆子一樣回答我自己的問題

問題 1. OpenIKED (IKEv2) 不支持傳輸模式,所以只能用於 VPN,不能用於 LAN。使用isakmpd(IKEv1)

問題 2. 的文件ipsec.confauthenc值具有預設值,但您似乎仍然需要設置它們

我還需要配置什麼?

您需要設置正確的rc.d標誌isakmpd(見下文)

是否有 IPSEC 和 iked 的日誌,如果有,我在哪裡可以找到它們?

日誌位於/var/log/daemon

如何判斷 IPSEC 是否在配置後工作,而不查看機器之間的數據包?

在 B 上執行tcpdump host A,在 A 上執行ping B。你想在 tcpdump 輸出中看到espspi

設置:

主機 A (10.0.2.10)

# cat << EOF > /etc/ipsec.conf
ike active esp transport from 10.0.2.10 to 10.0.2.11 \
 main auth hmac-sha1 enc aes \
 quick auth hmac-sha2-256 enc aes 
EOF
# chmod 640 /etc/ipsec.conf

# cd /etc/isakmpd/pubkeys/ipv4
# scp notRoot@10.0.2.11:/etc/isakmpd/local.pub 10.0.2.11 `# copy remote's public key`

# rcctl enable ipsec
# rcctl enable isakmpd
# rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging`

# ipsecctl -vf /etc/ipsec.conf  `# start ipsec, or reboot`
# rcctl start isakmpd

主機 B (10.0.2.11)

# cat << EOF > /etc/ipsec.conf
ike active esp transport from 10.0.2.11 to 10.0.2.10 \
 main auth hmac-sha1 enc aes \
 quick auth hmac-sha2-256 enc aes 
EOF
# chmod 640 /etc/ipsec.conf

# cd /etc/isakmpd/pubkeys/ipv4
# scp notRoot@10.0.2.10:/etc/isakmpd/local.pub 10.0.2.10 `# copy remote's public key`

# rcctl enable ipsec
# rcctl enable isakmpd
# rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging`

# ipsecctl -vf /etc/ipsec.conf  `# start ipsec, or reboot`
# rcctl start isakmpd

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