桥接与 iptables 与路由?

桥接与 iptables 与路由?

iptables、bridge-utils 和 route

我在 Linux 服务器上有两块网卡,不知道如何让它们通信。经过大量搜索,我仍然不知道哪种方法有效,也不知道使用每种方法的含义。

这是我的系统。

  cat5 cable   +----------------------------------+ cable
<------------- |  my server                       |<------> WiFi router
router         | eth1               eth2          |         192.168.0.1
& internet     | 10.11.12.13        192.168.7.7   |      gw:192.168.7.7 ?
               | gateway: 10.1.1.1                |  192.168.0.x for WiFi clients

wifi 客户端应该能够访问互联网和 10.xxx 子网,但 wifi 客户端不能位于 10.xxx 子网,它们必须具有 192.168.xx 范围内的 IP 地址。

那么我该如何连接这两个网络呢?我该使用 iptables 吗?我该使用 linux “route” 命令吗?我该使用 bridge-utils 来搭建网桥吗?

此外,WiFi网关应该是 192.168.0.1 还是 192.168.7.7?

我已将服务器至路由器的电缆插入 WAN 端口。

PS 我曾在 StackExchange (i) 网络和 (ii) Linux 上询问过这个问题,但没有得到答案,(iii) 也尝试过 Reddit。

答案1

桥接用于向网络添加/合并段。当您桥接两个网络接口时,您正在做的是允许网络广播到达所有节点。桥接不适用于您尝试执行的操作。

为了使路由器正常运行,这里有一个基本参考:

检查路由的 IP 转发状态:
sysctl net.ipv4.ip_forward

设置(启用)路由的 ip 转发状态:
echo 1 > /proc/sys/net/ipv4/ip_forward

取消设置(禁用)路由的 ip 转发状态:
echo 0 > /proc/sys/net/ipv4/ip_forward

在您验证已启用 IP 转发后,您可以在公共接口(具有物理互联网连接的网络接口)上使用 iptables 作为 NAT 接口。

我不会在这里尝试全面解释 NAT,但这是一个基本示例:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
/sbin/iptables -A FORWARD -i eth1 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT

你可以像这样看到 nat:
sudo iptables -L -t nat

答案2

思考你应该使用 iptables 连接这两个接口。根据这个http://www.linuxforums.org/forum/newbie/186273-iptables-forwarding-vs-ip-route-post877996.html#post877996

路由器的网关应该是 192.168.1.7,以允许来自子网的 IP 数据包发送到 eth2。iptables 应该从那里处理它,并且前锋将其连接至 eth1。

这是对类似问题的答案,详细说明了 iptables 转发规则。 https://serverfault.com/questions/431593/iptables-forwarding-between-two-interface

相关内容