Я настроил сеть, показанную на следующей диаграмме:
ROT1 - маршрутизатор на основе томатов. Он имеет сетевой мост BR0 для всех клиентов внутренней сети с подсетью 192.168.1.0/24. Одним из клиентов является устройство NAS (NAS01), которое предоставляет некоторые базовые услуги, такие как ownCloud и SMB-сервер. Клиенты LAP01 и MOB01 могут видеть NAS01 и использовать его сервисы. ROT1 также настроил две VPN: TAP0 - это туннель с мостом OpenVPN, который соединен с BR0, поэтому клиент LAP04 получает IP-адрес от сервера DHCP в подсети 192.168.1.0/24. Этот клиент также может пинговать устройство NAS01 во внутренней подсети. Маршрутизатор ROT01 запускает программу arpwake
для автоматического пробуждения NAS01 с помощью Magic Packet, когда хост запрашивается другим клиентом в сети с запросом ARP (кто имеет). Вы можете найти описание приложения и ссылки на его исходный код здесь. Приложение arpwake
прослушивает BR0 для запроса ARP, содержащего MAC-адрес NAS01, и автоматически отправляет пакет Magic Packet, если один из клиентов в сети запрашивает его.
Проблема в том, что я пытаюсь настроить маршрутизируемый VPN-туннель также с OpenVPN, что позволит мне использовать приложение arpwake
для автоматического пробуждения NAS01, когда один из клиентов из сети TUN0 попросит об этом. Если NAS01 работает, я могу пропинговать его и использовать все сервисы, но если он не работает, я не могу разбудить его с приложением arpwake
, потому что на этом интерфейсе нет запросов ARP (TUN0) - я уже проверил это с tcpdump на маршрутизатор. Я также пытался использовать Proxy ARP с командой echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
но все равно он не работает.
Вот конфигурация маршрутизатора:
Маршруты
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.200.2 * 255.255.255.255 UH 0 0 0 tun0
192.168.0.1 * 255.255.255.255 UH 0 0 0 vlan2
192.168.200.0 192.168.200.2 255.255.255.0 UG 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.0.0 * 255.255.255.0 U 0 0 0 vlan2
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.0.1 0.0.0.0 UG 0 0 0 vlan2
iptables (вывод iptables-save
относительно только TUN0)
# Generated by iptables-save v1.3.8 on Sun Aug 28 12:08:23 2016
*nat
:PREROUTING ACCEPT [50195:5904352]
:POSTROUTING ACCEPT [409:28145]
:OUTPUT ACCEPT [4413:306096]
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
# Completed on Sun Aug 28 12:08:23 2016
# Generated by iptables-save v1.3.8 on Sun Aug 28 12:08:23 2016
*mangle
:PREROUTING ACCEPT [1628436:1350223724]
:INPUT ACCEPT [43707:3160699]
:FORWARD ACCEPT [1563428:1344198921]
:OUTPUT ACCEPT [13790:1556262]
:POSTROUTING ACCEPT [1576178:1345632445]
COMMIT
# Completed on Sun Aug 28 12:08:23 2016
# Generated by iptables-save v1.3.8 on Sun Aug 28 12:08:23 2016
*filter
:INPUT DROP [10689:641141]
:FORWARD ACCEPT [19:1151]
:OUTPUT ACCEPT [13539:1531250]
-A INPUT -i tun0 -j ACCEPT
COMMIT
# Completed on Sun Aug 28 12:08:23 2016
Конфигурация TUN0 OpenVPN (опции, связанные с безопасностью удалены)
local [IP_address]
port [PORT]
proto udp
dev tun
server 192.168.200.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
push "dhcp-option DNS 192.168.1.1"
ifconfig для интерфейса TUN0 (по умолчанию OpenVPN вызывает этот интерфейс с параметром NOARP, но даже если я включу его снова с помощью команды ifconfig tun0 arp
это не решит мою проблему).
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.200.1 P-t-P:192.168.200.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:311 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:21166 (20.6 KiB) TX bytes:3486 (3.4 KiB)
Мой вопрос: как заставить этот интерфейс TUN0 начать работать с ARP?