You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过OpenVPN连接Azure AKS私有集群后无法执行kubectl命令的解决办法

修复Azure私有AKS通过OpenVPN无法访问API服务器的问题

排查与修复步骤

1. 开启堡垒机的IP转发功能

堡垒机作为OpenVPN服务器,必须开启IP转发才能将客户端流量转发到AKS私有网络:

  • 先确认当前状态:
    sysctl net.ipv4.ip_forward
    
    若输出为net.ipv4.ip_forward = 0,执行以下命令永久开启:
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    sysctl -p /etc/sysctl.conf
    

2. 验证OpenVPN的路由推送配置

确保OpenVPN服务器向客户端推送了AKS集群所在私有网段的路由,让客户端流量能正确导向AKS网络:

  • 打开OpenVPN服务器配置文件(通常为/etc/openvpn/server.conf),确认包含类似规则(替换为你的AKS私有网段,比如覆盖API服务器10.1.4.0/24及集群节点网段):
    push "route 10.1.0.0 255.255.0.0"
    
  • 修改后重启OpenVPN服务:
    systemctl restart openvpn@server
    
  • 客户端连接VPN后,检查本地路由表:
    • Windows:执行route print,确认AKS网段路由指向VPN虚拟网卡
    • Linux/macOS:执行route -n或netstat -rn,确认对应路由存在

3. 检查堡垒机的防火墙与Azure NSG规则

需要确保堡垒机的本地防火墙和Azure网络安全组(NSG)允许流量转发:

  • 本地防火墙(以iptables为例):添加规则允许VPN客户端访问AKS API的443端口,以及返回流量:
    # 允许VPN隧道接口的入站443流量
    iptables -A INPUT -i tun0 -p tcp --dport 443 -j ACCEPT
    # 允许堡垒机出站到AKS API的443流量
    iptables -A OUTPUT -o eth0 -d 10.1.4.4 -p tcp --dport 443 -j ACCEPT
    # 允许转发VPN客户端到AKS的流量
    iptables -A FORWARD -i tun0 -o eth0 -d 10.1.4.4 -p tcp --dport 443 -j ACCEPT
    
    执行iptables-save > /etc/iptables/rules.v4保存规则,避免重启丢失。
  • Azure NSG:检查堡垒机所在子网的NSG出站规则,确保允许访问AKS API服务器私有网段的443端口;同时检查AKS所在子网的NSG入站规则,允许堡垒机IP的443流量访问。

4. 配置OpenVPN的NAT规则

添加SNAT规则,让VPN客户端的流量通过堡垒机的网卡转发到AKS网络时,源IP被替换为堡垒机的私有IP:

# 替换<VPN_CLIENT_SUBNET>为你的OpenVPN客户端网段(比如10.8.0.0/24)
iptables -t nat -A POSTROUTING -o eth0 -s <VPN_CLIENT_SUBNET> -j MASQUERADE

5. 确认AKS API服务器的访问控制

检查AKS是否配置了API服务器授权IP范围,确保堡垒机的私有IP在允许列表内:

  • 查询当前授权IP:
    az aks show -g <RESOURCE_GROUP> -n <AKS_CLUSTER_NAME> --query apiServerAccessProfile.authorizedIpRanges
    
  • 若堡垒机IP不在列表中,添加后更新AKS:
    az aks update -g <RESOURCE_GROUP> -n <AKS_CLUSTER_NAME> --api-server-authorized-ip-ranges "<堡垒机私有IP>/32,其他允许IP"
    
    也可临时清空授权IP范围测试:
    az aks update -g <RESOURCE_GROUP> -n <AKS_CLUSTER_NAME> --api-server-authorized-ip-ranges ""
    

6. 分层测试连通性

  • 客户端连接VPN后,先ping堡垒机的私有IP,确认VPN基础连通正常
  • 再ping AKS API服务器IP(10.1.4.4),若ping不通,重点排查路由或防火墙规则
  • 若ping通但telnet 443失败,检查端口级防火墙和AKS API的访问控制

内容的提问来源于stack exchange,提问作者Jananath Banuka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:15:31