我运行 Debian 8,需要桥接一个 tap 接口tap0
(eth0
尝试设置 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 地址来识别服务器,并且 的br0
MAC 地址与 不同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
很有魅力。