Я запускаю 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 - это IP-адрес, зарезервированный для этого сервера DHCP маршрутизатора. Маршрутизатор (192.168.0.1) используется для доступа в Интернет.
Когда я запускаю сценарий, все кажется хорошо изнутри LAN. Однако все порты, которые были перенаправлены в маршрутизаторе на 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.
Хорошо, ответ довольно прост. Когда мост поднимается, маршрут для шлюза по умолчанию исчезает. Так что
route add default gw 192.168.0.1 br0
работает как шарм.