我在 Linux 虚拟机(运行 Ubuntu 20.04 的 Google Cloud Compute Engine 实例)上有一个 OpenVPN 服务器。
我的办公室里有一台 Linux 笔记本电脑(运行 Ubuntu 20.04)。它通过无线方式连接到我的办公室路由器以访问互联网。我将这台笔记本电脑连接到 OpenVPN 服务器,因此现在它充当 VPN 客户端。我已通过以太网端口将 PLC(可编程逻辑控制器)连接到我的笔记本电脑。
我有另一台台式机(Windows PC),也连接到 OpenVPN 服务器。因此,它充当第二个 VPN 客户端。
- VPN 服务器 (Ubuntu 虚拟机) 的 IP 地址:
10.8.0.1
- VPN 客户端 1(Ubuntu 笔记本电脑)的 IP 地址:
10.8.0.2
- VPN 客户端 2 (Windows PC) 的 IP 地址:
10.8.0.3
- 连接到 Ubuntu 笔记本电脑的 PLC 的 IP 地址:
10.0.0.60
目标是能够从 Ubuntu 服务器(虚拟机)或 Windows PC(客户端 2)ping PLC。
据我了解,它们位于不同的子网中,因此我将 Ubuntu 笔记本电脑配置为 VPN 连接 (tun0) 和以太网端口 (eno1) 之间的网关。以下是我的'ifconfig
输出中与这些适配器相对应的详细信息:
我执行了以下命令来实现网关功能:
sudo ip addr add 10.0.0.1/24 dev eno1
sudo iptables -A FORWARD -o tun0 -i eno1 -s 10.0.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
(And uncommented net.ipv4.ip_forward=1 from /etc/sysctl.conf)
我仍然无法从任何其他机器(VM 或 Windows PC) ping 我的 PLC。
我对网络不太熟悉。因此,如果我遗漏了 Ubuntu 笔记本电脑或虚拟机上的其他配置,请告诉我。如能得到任何帮助,我将不胜感激。
答案1
您必须通过 openvpn 服务器在笔记本电脑上配置 openvpn 网关设置。服务器配置文件中有示例,请查找“Thelonious”
本质上,您需要在服务器上创建一个文件,/etc/openvpn/ccd
其名称在/etc/openvpn/openvpn-status.log
客户端连接时显示。在该文件中添加iroute 10.0.0.0 255.255.255.0
。这应该将客户端配置为网关。
您还需要在 openvpn 服务器配置文件中启用 ccd 位置、添加路由并允许客户端到客户端通信。查看配置文件注释,它们非常好,应该涵盖您需要的一切。