Google Kubernetes Engine 上的 OpenVPN:向客户端公开私有 IP

Google Kubernetes Engine 上的 OpenVPN:向客户端公开私有 IP

我们的场景:我们在 GKE pod 上安装了一个 OpenVPN 服务器,其中有想要连接到我们 VPN 的 VPN 客户端。我们需要向客户端公开 GKE 集群中另一个 pod 上的服务(具体来说是 MQTT 适配器)。地址 10.86.12.209 是我们 GCP VPC 上的私有 IP,指向 MQTT 适配器 pod(请查看下图)。

网络场景

我们的服务器配置文件片段如下

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.86.12.0 255.255.255.0"
push "route 240.5.0.0 255.255.0.0"
push "route 240.6.0.0 255.255.0.0"
topology subnet

sndbuf 0
rcvbuf 0
push "sndbuf 0"
push "rcvbuf 0"

Windows 客户端连接到我们的 OpenVPN 服务器的路由打印如下:

 Network address        Mask            Gateway         Interface    Metric

          0.0.0.0          0.0.0.0    192.168.178.1   192.168.178.29     35
         10.8.0.0    255.255.255.0         On-link          10.8.0.8    281
         10.8.0.8  255.255.255.255         On-link          10.8.0.8    281
       10.8.0.255  255.255.255.255         On-link          10.8.0.8    281
       10.86.12.0    255.255.255.0         10.8.0.1         10.8.0.8    281
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
     172.25.192.0    255.255.240.0         On-link      172.25.192.1    271
     172.25.192.1  255.255.255.255         On-link      172.25.192.1    271
   172.25.207.255  255.255.255.255         On-link      172.25.192.1    271
    192.168.178.0    255.255.255.0         On-link    192.168.178.29    291
   192.168.178.29  255.255.255.255         On-link    192.168.178.29    291
  192.168.178.255  255.255.255.255         On-link    192.168.178.29    291
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link          10.8.0.8    281
        224.0.0.0        240.0.0.0         On-link    192.168.178.29    291
        224.0.0.0        240.0.0.0         On-link      172.25.192.1    271
        240.5.0.0      255.255.0.0         10.8.0.1         10.8.0.8    281
        240.6.0.0      255.255.0.0         10.8.0.1         10.8.0.8    281
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link          10.8.0.8    281
  255.255.255.255  255.255.255.255         On-link    192.168.178.29    291
  255.255.255.255  255.255.255.255         On-link      172.25.192.1    271

我们的问题:客户端成功连接到 VPN,但无法访问 MQTT pod。我们怀疑 K8S 端缺少一些配置,无法让 OpenVPN pod 到达 MQTT 适配器 POD

答案1

为了修复该情况,我们修改了 OpenVpn pod 中的 iptables:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

启用 IP 伪装

相关内容