Linux 以太网桥可以通过路由器访问

Linux 以太网桥可以通过路由器访问

我运行 Debian 8,需要桥接一个 tap 接口tap0eth0尝试设置 OpenVPN 服务器)。我使用 OpenVPN 帮助页面中的标准桥接脚本:

#!/bin/sh

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.0.140"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.0.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

其中 192.168.0.140 是路由器的 DHCP 为该服务器保留的 IP 地址。路由器 (192.168.0.1) 用于访问互联网。

当我运行脚本时,局域网内部一切正常。然而,路由器中转发到 192.168.0.140 的所有端口突然停止响应。

我注意到路由器的 DHCP 使用 MAC 地址来识别服务器,并且 的br0MAC 地址与 不同eth0。所以我添加了

ifconfig $br hw ether d0:50:99:3b:4e:ff

在桥接脚本的末尾,使 具有br0与 相同的 MAC eth0。它确实为 分配了“正确”的 MAC br0,但不幸的是,这并不能解决问题。

问题似乎出在路由器本身,因为仍然可以从 LAN 访问服务器。

答案1

好吧,答案很简单。当桥接器启动时,默认网关的路由就消失了。所以

route add default gw 192.168.0.1 br0

很有魅力。

相关内容