在两台主机之间的 LAN 上设置 IPSEC (OpenBSD)

Nei*_*gan 6 local-area-network ipsec openbsd ikev2

尝试在 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/etc/iked/pubkeys/ipv4/10.0.2.10
复制B/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
Run Code Online (Sandbox Code Playgroud)

检查配置:

/sbin/iked -n
Configuration OK
Run Code Online (Sandbox Code Playgroud)

我对接下来要做什么感到困惑。我想我需要设置/etc/ipsec.conf,但我只找到了 IKEv1 文档。

重新启动了两台机器。没有错误。说 iked 守护进程启动了。如果我将公钥重命名为任何内容,仍然可以互相 ping 通,因此 IPSEC 似乎不起作用。

  1. 我还需要配置什么?
  2. 是否有 IPSEC 和 iked 的日志,如果有,我在哪里可以找到它们?
  3. 如何在不查看机器之间的数据包的情况下判断 IPSEC 是否在配置后工作?从 B 到 A 的 Ping,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
Run Code Online (Sandbox Code Playgroud)

十六进制需要全部大写

chmod 640 /etc/ipsec.conf

ipsecctl -F (delete config)
ipsecctl -f /etc/ipsec.conf (load config)
ipsecctl -s all -v (show config)
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用 IKEv2 的自动键控。我能做什么?

Nei*_*gan 2

像书呆子一样回答我自己的问题

问题 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
Run Code Online (Sandbox Code Playgroud)

主机 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
Run Code Online (Sandbox Code Playgroud)