这是我的情况:
路由器 A:IP 192.168.1.1 掩码 192.168.1.0/24 - 连接到互联网。
服务器: - 接口 eth0:inet addr:10.1.1.125 掩码:255.255.255.0(连接到路由器 B) - 接口 ra0:inet addr:192.168.1.125 掩码:255.255.255.0(连接到路由器 A)
路由器 B:IP 10.1.1.254 掩码 10.1.1.0/24 - 连接到服务器的 eth0
电脑:通过WiFi连接,连接到路由器B。
我在路由器 B 上配置了一条静态路由,使用 192.168.1.125 作为默认网关,我可以从计算机 ping 该 IP。
问题是:我如何连接到互联网?换句话说,来自服务器 eth0 的流量应使用 ra0 作为网关。
有什么建议吗?
谢谢
答案1
我认为您需要在服务器上启用路由功能(我假设是 Linux),以便它能够路由不发往自身的数据包。请参阅本文如何做到这一点。
答案2
回应 ~quack 的评论,为什么不直接连接路由器并让它们处理路由?特别是如果它们是 NAT 路由器,那么数据包就有更好的机会流动,因为不仅 Computer01 需要知道如何到达互联网,RouterA 也需要知道如何到达 Computer01。
这可能很简单,只需将您的服务器变成 NAT 路由器即可,可以使用 Windows 的接口共享或各种 Linux 配置。虽然我并不反对将服务器用作路由器,但这样做确实会给服务器带来额外的负载。
答案3
我找到了一个使用 iptables 的解决方案(仅两行):
iptables --table nat --append POSTROUTING --out-interface ra0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
谢谢你们!
答案4
您可以桥接服务器上的两个接口。
- 安装桥接实用程序包。
apt-get 安装 bridge-utils
- 创建桥梁。
brctl addbr br0
- 从以太网接口删除所有 IP 地址。
ifconfig eth0 0.0.0.0 关闭
ifconfig eth1 0.0.0.0 关闭
- 如果需要,启用 STP 支持。
brctl stp bra 开启
- 将以太网接口连接至网桥。
brctl addif br0 eth0
brctl addif br0 eth1
- 启动网桥和以太网接口。
ifconfig eth0 启动
ifconfig eth1 启动
ifconfig br0 启动
看关联更多细节。