我在 AWS 中运行一个 OpenVPN 访问服务器 - 该实例是使用市场上的官方 AMI 构建的。一旦连接到 VPN,就要求阻止所有客户端的互联网访问。这意味着,一旦连接,它们应该只路由到 VPC 网络。
我怎样才能实现这个目标:
1)无需对客户端配置进行任何更改
2)无需对访问服务器中的操作系统级别路由进行任何更改(如果没有其他选择,可以探索这一点)
拆分隧道不是一种选择,在这种情况下阻止访问服务器的互联网访问也不是一种选择。
提前致谢。
答案1
通过 VPN 将默认路由推送到客户端到 AWS 主机(添加push "redirect-gateway def1"
到您的 server.conf 文件)。
然后将 AWS 主机上的防火墙设置为仅允许访问您希望客户端可以访问的子网。
答案2
此 OpenVPN 配置导致客户端使用传统路由来处理其余的 Internet 数据包,但随后10.8.0.0/24
通过实际 VPN 路由所有与业务相关的流量(在本例中为)。
我设法把它们整理好了server.conf
。我粘贴了整个文件,并注释了我更改或添加的所有行,也出于顺序考虑。
port 1194
proto udp6
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
client-to-client # Otherwise, clients may not be able to connect but to the server.
push "route 10.8.0.0 255.255.255.255 10.8.0.1 1" # Push default VPN route for
# redirecting internal traffic
# only
# push "route <network_ip> <netmask> <gateway, normally, the server> <priority>"
ifconfig-pool-persist ipp.txt
#push "dhcp-option DNS 8.8.8.8" # Comment out so clients won't get DNS config
# changed.
#push "dhcp-option DNS 8.8.4.4" # Ditto
#push "redirect-gateway def1 bypass-dhcp" # Comment out so clients won't get
# their default routing changed,
# thus redirecting even Internet
# packets.
server-ipv6 fd42:42:42:42::/112
tun-ipv6
push tun-ipv6
#push "route-ipv6 2000::/3" # Disable Internet IPv6 addresses routing
#push "redirect-gateway ipv6" # So no IPv6 routing override.
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_P0QFYDE85qRItX6k.crt
key server_P0QFYDE85qRItX6k.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3