网络命名空间内的 Netlink 访问

网络命名空间内的 Netlink 访问

我正在尝试在 Raspberry Pi 2 上设置 IPsec 网关 (strongSwan)。

Pi 已经使用私有 IP 地址在 LAN 上提供了许多服务。

我最初尝试将其转变为 IPsec 网关,只需将公共 IP 地址添加到同一接口 ( eth0) 并在此新地址上启用 StrongSwan SA。这是可行的,在启用该pcrypt模块后,我设法获得了约 80Mbps 的解密吞吐量,考虑到所有因素,这确实相当不错。

然后我决定尝试将 StrongSwan 的东西隔离到一个单独的网络命名空间中。我这样做了ip netns add vpnmacvlan在 上创建了一个设备eth0,然后将其添加到vpn命名空间中。然后我跑了ip netns exec vpn ipsec start,一切又恢复正常了。

然而,pcrypt命名空间内似乎不再活跃,吞吐量下降至约 25Mbps。我通常启用pcryptusing crconf,按照这条指令。当在命名空间内调用时,它不断失败并出现网络链接错误。运行strace crconf给出了这个宝石:

socket(PF_NETLINK, SOCK_RAW, NETLINK_CRYPTO) = 3
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [32768], 4) = 0
setsockopt(3, SOL_SOCKET, SO_RCVBUF, [1048576], 4) = 0
bind(3, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, pid=997, groups=00000000}, [12]) = 0
send(3, "\24\0\0\0\23\0\1\3U\212\327V\0\0\0\0\0\0\0\0", 20, 0) = -1 ECONNREFUSED (Connection refused)

NETLINK_CRYPTO因此内核拒绝从网络命名空间内部到套接字的连接。

问题:如何允许NETLINK_CRYPTO来自我的网络命名空间的连接?

相关内容