访问其他 AWS VPC 实例但使用 OpenVPN 服务器

访问其他 AWS VPC 实例但使用 OpenVPN 服务器

我在 AWS VPC 上的公共子网中的 Bastion 实例上配置了 OpenVPN 服务器。目前,我可以使用 OpenVpn 客户端访问该实例的私有 IP 地址,但我们想要访问在其他私有子网中运行的 EC2 实例在 VPC 中。

这是我的 server.conf 文件:

port 1194

# TCP or UDP server?
;proto tcp
proto udp


;dev tap
dev tun


;dev-node MyTap


ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key 

dh /etc/openvpn/easy-rsa/pki/dh.pem


;topology subnet


server 10.8.0.0 255.255.255.0

;client-config-dir ccd
route 10.10.0.0 255.255.0.0
route 10.10.12.0 255.255.255.0
route 10.10.52.0 255.255.255.0
route 10.10.51.0 255.255.255.0
push "route 10.10.0.0 255.255.0.0"
push "route 10.10.12.0 255.255.255.0"
push "route 10.10.11.0 255.255.255.0"
push "route 10.10.51.0 255.255.255.0"
push "route 10.10.52.0 255.255.255.0"




;learn-address ./script


;push "redirect-gateway def1 bypass-dhcp"

;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"


client-to-client

#keepalive 10 120



tls-auth ta.key 0 # This file is secret

cipher AES-256-CBC

user nobody
group nobody

status openvpn-status.log

verb 3

由于我的网络知识水平不够,如果有人知道如何解决这个问题,我将不胜感激。

谢谢

答案1

我的 VPC 中有几个 Mikrotik Cloud RouterOS 作为 OpenVPN 服务器,我也花了一段时间才让它运行起来。

我不太了解你的基础设施,也不清楚你目前的问题是什么,但是我假设您的客户端已经可以连接到 OpenVPN 服务器,但无法访问其他私有 EC2 服务器。

我注意到您的客户端 IP 池 (10.8.0.0/24) 与 OpenVPN 服务器内部 IP (10.10.0.0/16) 不同。这会使 VPC 路由变得复杂,因为您的 VPC 路由表不知道 10.8.0.0/24 是哪个子网,也不知道将相应流量路由到哪里。

我解决这个问题的方法是应用 NAT,这样当数据包离开 OpenVPN 服务器时,我的客户端流量(假设 IP 10.8.0.100)将被伪装成 OpenVPN 服务器(假设 IP 10.10.0.100)。这样,私有 EC2 服务器将始终通过 OpenVPN 服务器进行路由。

您还需要检查以下几件事:

  1. EC2 安全组允许流量

  2. VPC 子网与您的路由表相关联

  3. VPC 路由表有相应的路由设置

  4. 如果发生 NAT,则禁用 EC2 源/目标检查

另一种解决方案可能是设置路由表,以便将所有 10.8.0.0/24 流量发送到您的 OpenVPN 服务器,但我从来没有实现过这种方法,所以如果您选择这条路线,祝您好运。

相关内容