У меня есть Ubuntu, на котором запущен клиент OpenVPN. Интерфейс подключения соединяется с wlna0, который используется для создания softAP с hostapd. Желаемый эффект здесь состоит в том, чтобы любые беспроводные клиенты появлялись в VPN и использовали DHCP-сервер на другом конце VPN. На самом деле это работает совершенно нормально, за исключением того, что после запуска моста я не могу подключиться по ssh к самому ящику ubuntu и не могу пинговать 192.168.1.1 (gw). Прежде чем мост будет запущен, я могу подключиться к машине по SSH с адаптера ответвителя (через VPN) и могу пропинговать шлюз.
Это сценарий, который я использую, чтобы поднять мост.
#!/bin/sh
# Add tap
echo "Adding tap"
openvpn --mktun --dev tap0
ip link set tap0 address 70:85:cc:22:73:ab
ifconfig tap0 0.0.0.0 promisc up
# Add bridge
echo "Adding bridge"
brctl addbr br0
ip link set br0 address 70:85:cc:22:73:af
ifconfig br0 0.0.0.0 promisc up
# Add interfaces to bridge
echo "Adding interfaces to bridge"
brctl addif br0 wlan0
brctl addif br0 tap0
# Update firewall rules
echo "Updating firewall"
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
# Start the VPN connection
sleep 10
echo "Starting openvpn"
openvpn --config /etc/openvpn/client/home.conf > /dev/null &
После этого сценария я обязательно запускаю dhclient br0 и могу заметить, что мост получает IP-адрес от DHCP-сервера через VPN:
pi@raspberrypi:~$ ifconfig br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 169.254.153.212 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::3ad2:2b42:3e26:be2d prefixlen 64 scopeid 0x20<link>
inet6 fe80::7285:ccff:fe22:73af prefixlen 64 scopeid 0x20<link>
ether 70:85:cc:22:73:af txqueuelen 1000 (Ethernet)
RX packets 7 bytes 1478 (1.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 9886 (9.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.20 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::e828:2334:df46:b792 prefixlen 64 scopeid 0x20<link>
ether dc:a6:32:51:44:00 txqueuelen 1000 (Ethernet)
RX packets 90 bytes 13504 (13.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 168 bytes 27189 (26.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
tap0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.1.19 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::4108:9315:b5f4:db3d prefixlen 64 scopeid 0x20<link>
ether 70:85:cc:22:73:ab txqueuelen 100 (Ethernet)
RX packets 7 bytes 1576 (1.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 58 bytes 8854 (8.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.186.184 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::a0a2:beb:d26b:9a72 prefixlen 64 scopeid 0x20<link>
ether dc:a6:32:51:44:01 txqueuelen 1000 (Ethernet)
RX packets 7 bytes 1900 (1.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 88 bytes 17630 (17.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Есть идеи, что здесь может происходить?