我知道这个标题似乎是“回答过多了”,但我在搜索时真的没有运气……
编辑:我已经更新了图表和问题,更加准确
为了更好地解释我的情况,这里有一个小图表:
我试图让“PC Home”像“PC Work”一样运行: - 浏览除 10.42.0.x 以外的其他网络上无法访问的所有站点 - 在 10.42.xx 网络上使用 SSH 连接其他本地客户端 - 使用工作网络提供的 DNS(用于自定义 TLD)
换句话说,我希望 PC Home“变成”PC Work。
我知道可以将 2 个客户端连接到一个 OpenVPN 中介 (PC 主页上的客户端 OpenVPN -> OpenVPN 服务器 -> PC Work 上的客户端 OpenVPN -> 使用 PC Work 上的网络)。
但是我对网络基础设施的了解确实很少......
有人能向我解释一下该怎么做吗?(TAP 而不是 TUN?也许是客户端到客户端连接?Iptables 规则转发?)
哦,我忘了;我在 Linux 上工作,PC Home 在 Ubuntu 18.04 上(但应该适用于任何操作系统),OpenVPN Server 也在 Ubuntu 18.04 上,PC Work 在 Raspbian 上 :)
谢谢!一些实际的配置文件:
服务器配置文件:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-config-dir ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
在 IPP 文件中,我为客户端家庭和客户端工作指定 VPN IP(10.8.0.10 和 10.8.0.20)。服务器上启用了 IP 转发。在服务器 /etc/ufw/before.rules 上,我添加了以下几行:
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
如果我错过了其他有用的东西请告诉我:)
谢谢 !
答案1
通常对于网络到网络连接,OPENVPN 会创建自己的网络来连接节点(10.8.0.0/MASK)。
您将有两台 OPENVPN 机器,两端各一台,一个服务器和一个客户端。
这些机器也将连接到两端的网络,192.168.0.0/MASK 和 10.42.0.0/MASK 似乎是您的情况。
从两台 OPENVPN 机器可以到达另一端,也就是说,从 10.8.0.10 可以 ping 通 10.8.0.20
如果是这样,我认为您必须做 3 件事来将流量路由到远程网络。
1- 在两台服务器上激活 IPFORWARD
echo 1>/proc/sys/net/ipv4/ip_forward
2- 在路由器上添加路由,如下所示
路由器A:
ip route add 10.42.0.0/MASK via 192.168.0. [OPENVPN ip]
路由器B:
ip route add 192.168.0.0/MASK via 10.42.0.0. [OPENVPN ip]
3- 你应该已经拥有它们了,但在每一端,你还应该在 OPENVPN 服务器上有一个到达另一端的路由,例如
OpenVPN1:
ip route add 10.42.0.0/MASK via 10.8.0.10
OpenVPN2:
ip route add 192.168.0.0/MASK via 10.8.0.20
这样,您就告诉您的 OPENVPN 服务器路由网络以及如何访问它们。
我希望我能帮到你。