如何在虚拟服务器上将 OpenVPN 设置为互联网网关以及多个专用网络之间的连接

如何在虚拟服务器上将 OpenVPN 设置为互联网网关以及多个专用网络之间的连接

我正在尝试实现以下内容:

  • 网络 A(例如 192.168.1.0/24)和路由器(192.168.1.254)
  • 网络 B(例如 192.168.2.0/24)和路由器(192.168.2.254)
  • 带有 VPN 网络 (10.8.0.0/24) 的 VPN 在线虚拟服务器(例如 172.217.2.7)
  • 客户端 A(例如使用公共 Wifi)
  • 客户端 B(例如在其他一些专用网络上)

我希望所有网络和客户端在我的服务器上初始化 OpenVPN 连接,并且所有客户端都应该能够通过 vpn 看到其他客户端/网络。

我还希望客户端(不是路由器)的所有互联网流量都通过服务器进行路由(为了安全浏览),并且我还希望客户端能够访问专用网络“网络 A”和“网络 B”内的主机(反之亦然)

网络应该只路由发送到 VPN 客户端和位于其他网络后面的主机的数据

我将配置网络路由器来路由:

  • 192.168.X.0/24(其中 X 是自己的本地网络)本地
  • 192.168.0.0/16 通过 vpn。
  • 通过 VPN 访问 10.8.0.0/24
  • 互联网上为 0.0.0.0/0(其他一切……)
  • 防火墙:互联网需要 NAT 到公网 IP,VPN 无需 NAT

我的路线正确吗?

现在真正的问题是:如何设置 OpenVPN 服务器和防火墙规则。我的服务器是 Strato 虚拟专用服务器,使用 Ubuntu 14.04 64 位。

我是否应该将 NAT 设置为所有客户端的互联网网关,并忽略路由器上的 nat(如上所述的路由)?我如何让客户端相互通信?最困难的是:如何通过 vpn 设置网络内主机的数据包预警

例子:

Client B <=> VPN <=> Router for Net A <=> Host in Net A 
Host in Net A <=> Router Net A <=> VPN <=> Router Net B <=> Host in Net B
Server that hosts VPN ("internal IP") <=> VPN <=> Some Host behind a router
Server that hosts VPN ("internal IP") <=> VPN <=> Client

# Not that important, but would be cool:
Client A <=> VPN <=> Client B

我还需要设置什么吗?我可能忘记了上面提到的哪些内容?

答案1

1您是否启用了IP转发?

sudo vi /etc/sysctl.conf #uncomment net.ipv4.ip_forward and set = 1

net.ipv4.ip_forward = 1

sudo sysctl -p

如果您使用的是 TUN,那么您的客户端会有一个隧道 IP 地址。默认池为 10.8.1.0/24。除非您的路由器知道隧道 IP 并有它们的路由,否则您需要伪装 (NAT) 隧道的 IP 地址,以便 OpenVPN 服务器将源地址重写为其自身。您提到的路由 10.8.0.0/24 似乎已经涵盖了这一点。

sudo apt-get install iptables-persistent
sudo iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'

相关内容