只能访问 Linode VLAN 上的部分服务器

只能访问 Linode VLAN 上的部分服务器

我正在运行一个应用于 Linode 上多台服务器的 VLAN。分配的 IP 是10.0.16.n/24通过同一范围内的 OpenVPN 服务器访问的。

我已经从本地笔记本电脑连接到 VPN 盒,可以 ping 并连接到网络上的 2 台服务器,但不能再连接了。我没有 OpenVPN 付费许可证,但我认为这无关紧要??

我检查了netstat -tulpn | grep :22其中一台出现故障的服务器,发现

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 728/sshd: /usr/sbin

我有一条防火墙规则(在 UFW 上)22 ALLOW 10.0.0.0/16

我也无法 ping 通该盒子 - 我检查了 UFW 规则,它们是默认规则。这个盒子是 Ubuntu 22,而我可以本地连接的是 20,但除此之外,没有什么特别之处。我已完全关闭防火墙,但仍然没有成功。

有趣的是,从我可以连接的盒子,我还可以连接到 VLAN 上的其他盒子,而我无法远程执行此操作。这表明 OpenVPN 设置存在问题,但我遵循了标准的 Linode 教程,不确定哪些设置可能会影响它?

在 OpenVPN 配置下,Should VPN clients have access to private subnets (non-public networks on the server side)?我使用的Yes - using Routing是 Subnet10.0.16.0/32

答案1

VLAN 创建隔离的广播域,除非 openvpn 接口已标记正确的 vlan 标签,否则来自 openvpn 的流量将无法与 vlan 上的机器通信,即使它们具有相同的子网/范围。

我建议您在 openvpn 服务器上为 openvpn 接口启用 ip 转发,然后使用本地接口出站流量。

像在 root shell 中一样使用 sudo 运行以下命令。

sysctl net.ipv4.conf.eth1.forwarding=1
sysctl net.ipv4.conf.tun0.forwarding=1 

如果不是 tun0,请将 tun0 替换为您的 openvpn 隧道接口的名称,可能是 tap0 或类似名称。您还需要对要转发流量的任何其他接口运行该命令。

您可以运行sysctl net.ipv4.conf.all.forwarding=1,但这可能会产生安全问题,因此请与相关人员核实,并在启用之前进行检查。有时,快并不是最好的。

一旦确认此方法有效,您就可以使用以下命令更新 /etc/sysctl.conf:

net.ipv4.conf.eth1.forwarding=1
net.ipv4.conf.openvpn.forwarding=1 

您需要将您的电脑的网关设置为 openvpn 端点的 IP 地址。然后运行:

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun+ -o as0t+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth+ -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i as0t+ -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

 iptables -t nat -A POSTROUTING -s 10.0.127.0/24 -o eth+ -j MASQUERADE
 iptables -t nat -A POSTROUTING -s 10.0.127.0/24 -o as0t+ -j MASQUERADE

这将对来自您的客户端的任何连接进行 nat,并使用服务器的本地接口(能够访问所有机器)将流量转发到其他机器。

为了避免每次重启后都必须添加这些规则,请通过 apt 安装 iptables-persistent。iptables-persistent 将保存您的规则,并在每次重启时重新应用这些规则。

使用您提供的子网额外信息,您可以修改 openvpn 配置以将路由推送到您的 PC,而不是在 PC 上设置默认网关。在您的配置文件中的任何位置添加以下行,我建议将其添加到文件顶部附近设置 ip 的行下方。

push "route 10.0.16.0 255.255.255.0"  #note this is /24 subnet, not 32 as you mentioned.  a /32 is a host address written in CIDR format. 
push "route 172.x.x.x 255.x.x.x"
push "route 172.x.x.x 255.x.x.x"
push "route 178.x.x.x 255.x.x.x"
push "route 192.168.x.x 255.255.x.x"

linode 中的“监听所有接口”选项控制 openvpn 监听哪些接口以进行初始连接。一旦建立了 vpn 连接,该选项对 vpn 的性能没有任何影响。

相关内容