将数据包从 VPN 接口路由到其他 Pod 会更改源 IP

将数据包从 VPN 接口路由到其他 Pod 会更改源 IP

我有一个运行 WireGuard 的 pod,该 pod 中启用了 IPv4 转发,因此从 WireGuard 客户端发送的所有数据包都可以路由到其他 pod。

WireGuard 客户端 -> WireGuard pod 内的 WG-NIC --- 路由表 ---> eth0(Calico 管理的接口)-> 其他 pod。

问题是,到达 WG NIC 然后路由到其他 pod 的数据包始终具有 WireGuard pod 的 eth0 的 IP,而不是 WireGuard 客户端的真实 IP。

我不确定这里到底发生了什么,以及为什么 Kubernetes/Calico 会更改 WireGuard 客户端发送的数据包的源 IP。

我知道 Kubernetes 源 IP 地址,但在这里,我没有通过代理获取任何东西,而是直接获取到 pod,因此我不明白发生了什么。

我可以让 Kubernetes/Calico 不更改源 IP 并保留 WireGuard 客户端的 IP 吗?

这是我的 WireGuard podip addrip route

/app # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
4: eth0@if33: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1430 qdisc noqueue state UP
    link/ether d2:66:c9:1b:45:89 brd ff:ff:ff:ff:ff:ff
    inet 10.244.171.24/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d066:c9ff:fe1b:4589/64 scope link
       valid_lft forever preferred_lft forever
5: wg-firezone: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1280 qdisc noqueue state UNKNOWN qlen 1000
    link/[65534]
    inet 10.5.0.1/32 scope global wg-firezone
       valid_lft forever preferred_lft forever
    inet6 fd00::3:2:1/128 scope global
       valid_lft forever preferred_lft forever
/app # ip route
default via 169.254.1.1 dev eth0
10.5.0.0/24 dev wg-firezone scope link
169.254.1.1 dev eth0 scope link
/app #

iptables 完全干净且空。

相关内容