假设我们有一个本地子网192.168.1.0/24
,需要通过10.8.0.0/24
使用 OpenVPN 创建的子网双向连接到任何 VPS(Amazon EC2、Linode、Vultr 等)上的机器。
其中一部分已经完成。使用 TUN 连接 VPS 机器非常简单。我们还使用配置文件中的以下命令成功地为其授予了对本地子网的访问权限:
route 192.168.1.0 255.255.255.0
它现在可以连接到该本地子网中的任何计算机。问题在于反过来连接。本地机器找不到任何通往 VPS 服务器的路由。
应该将什么配置添加到 VPS 机器或本地 OpenVPN 服务器以允许从到192.168.1.3
路由?根据我们的实际配置,无法到达目的地。192.168.1.10
10.8.0.10
traceroute
这是驻留在服务器上的配置文件的概述
local 192.168.1.3
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
max-clients 1
route 192.168.1.0 255.255.255.0 192.168.1.1
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
explicit-exit-notify
[... certificates here ...]
这是客户端的配置:
client
dev tun
proto udp
remote [... our VPN's public address ...] 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
route 192.168.1.0 255.255.255.0
[... certificates here ...]
这是在VPC Subnet RouteTable中完成的。您必须
10.8.0.0/24
通过 OpenVPN EC2 实例添加路由:您还需要为实例禁用源/目标检查,否则 AWS 将不允许 EC2 实例 IP 到它的任何其他 IP 的流量。
然后当然你必须打开实例安全组,如果适用的话,它的本地防火墙(例如
iptables
)允许10.8.0.0/24
.希望有帮助:)
是关于ip转发的...
运行 CentOS 7 的 VPS 服务器只需要这样设置:
echo 'net.ipv4.ip_forward=1' >> /etc/systctl.conf
然后重新启动。