通过不同的子网路由传出的 HTTP/HTTPS 流量

通过不同的子网路由传出的 HTTP/HTTPS 流量

我正在尝试设置一个 Linux 服务器,该服务器最初只应位于一个“服务器子网”中。但是,我被迫使用代理来访问此子网中的 HTTP/HTTPS 服务,这给我的需要通过 HTTPS 访问 API 的 Web 应用程序带来了很多问题。

幸运的是,服务器连接到了第二个“客户端子网”,该子网提供对 HTTP/HTTPS 服务的无限制访问。我配置了两个 NIC,现在我在 eth0 上获得了服务器子网,在 eth1 上获得了客户端子网。

我正在阅读类似的问题并且我发现最接近的是这样的:https://askubuntu.com/questions/104400/how-to-put-all-traffic-and-on-one-interface-and-some-traffic-on-another-interfac 我按照说明相应地更改了端口和接口(eth0 的网关是默认网关):

iptables -t mangle -A OUTPUT -p tcp --dport 443 -o eth0 -j MARK --set-mark 1
ip rule add fwmark 1 table 1
ip route add 0.0.0.0/0 table 1 dev eth1

但这似乎不起作用。

我想知道是否实际上从技术角度来看,甚至可以创建某些路由规则,允许将本地传出的 HTTP/HTTPS 流量路由到另一个子网。

答案1

我知道这篇文章真的很老了,但最近我使用另一种涉及源策略路由的方法解决了这个问题:无法在非默认接口上 ping 多宿主 Linux 计算机

主机连接到两个网络。“客户端子网”允许访问外部资源,但其客户端无法从网络外部访问。“服务器子网”上的客户端可以从网络外部访问,但它们无法访问其自身网络之外的任何资源。

                  ---
                   |"Client Subnet"
 ------     eth0   | 3.3.0.10 
| Host |-----------
|      |-----------
 ------     eth1   |"Server Subnet"
                   | 123.123.0.10
                  ---

我将客户端子网的网关设置为默认网关,并配置源策略路由,如上文中的答案所示。然后服务器按预期运行。

echo 13 eth1 >> /etc/iproute2/rt_tables
ip route add default via 123.123.0.1 table eth1
ip rule add from 123.123.0.10 lookup eth1

相关内容