我正在操作一个已连接的服务器,该服务器具有活动的 OpenVPN 客户端。为了允许 SSH 访问服务器,我在服务器的 WAN 接口 (eno1) 中添加了另一个辅助 IP 地址,然后按降序执行了以下命令:
ip route add default via (secondary IP GW) dev eno1:0 table 1234
ip rule add from (secondary IP/NETMASK) table 1234
ip addr add (secondary IP/NETMASK) dev eno1:0
此设置在 SSH 下运行良好,因为我可以通过 SSH 使用辅助 IP 访问服务器,甚至还可以使用相同的辅助 IP 对其进行 ping 操作。
问题是,当我尝试访问托管在同一主机(docker 上)上的 Web 服务器时,连接超时。但是,当我断开 OpenVPN 客户端时,它又可以正常工作了。我在此服务器上没有配置活动的防火墙。
以下是该命令的部分输出netstat -plnt
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1852/sshd
tcp6 0 0 :::80 :::* LISTEN 2615/dockerd
tcp6 0 0 :::22 :::* LISTEN 1852/sshd
tcp6 0 0 :::443 :::* LISTEN 2615/dockerd
我想知道为什么当我尝试使用 HTTP/HTTPS 连接到我的服务器时会遇到连接超时,而使用 SSH 连接则没问题。
另外,我可以添加额外的规则/路由或 IPTables 规则来解决这个问题吗?
答案1
- 不要在该
ip
工具中使用别名命名方案。 - 不要在规则中使用掩码,否则您将得到奇怪的行为。
- 因此,您需要使用如下命令:
ip route add default via <ip-gw-secondary> dev eno1 table 1234
ip rule add from <2nd-ip> table 1234
ip addr add <ip-2nd>/<pref-len> dev eno1
- 你如何在程序中指定辅助 IP 的使用?你应该使用一个选项来指定源地址。
- 如果您的设置在 openvpn 处于活动状态时不起作用,您应该使用命令检查此时的实际路由
ip route get <dst> from <ip-2nd>
。