У меня работает Armbian linux на NanoPi R1. Он направляет весь трафик с eth1 (статический IP-адрес LAN, dnsmasq для DHCP / DNS) на eth0 (dhcp-клиент WAN) через IPTables NAT / Masquerading. Это нормально работает. Клиент, стоящий за eth1 в локальной сети, может подключиться к внешнему миру.
Теперь я установил Wireguard на устройство. В облаке есть сервис Wireguard VPN. Я могу связаться с ним на Pi, и он направляет весь трафик с Pi через интерфейс wg0.
Но клиенты в локальной сети больше ничего не могут достичь. Я не понимаю, как маршрутизировать весь трафик с eth1 через wg0 и достигать eth0. В сети есть много примеров, как настроить наоборот (сервер VPN), но я не уверен, как настроить интерфейс wg.
[Interface]
Address = 10.0.0.10/32, fd01:10:0::10/128
ListenPort = 21841
PrivateKey = ...
PostUp = iptables -A FORWARD -i %i -o eth1 -j ACCEPT; iptables -A FORWARD -o %i -i eth1 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -o eth1 -j ACCEPT; iptables -D FORWARD -o %i -i eth1 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth1 -j MASQUERADE
DNS = <provider-ip>
[Peer]
PublicKey = <pubkey>
EndPoint = <vpnserver>:<vpnport>
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Даже когда я удаляю или изменяю PostUp / Down, поведение не меняется. В ядре включена переадресация IP.
Это мой набор правил после запуска wg0:
$> iptables -L -n -x -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
12 1752 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4267 282274 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
273 24031 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- wlan0 * 0.0.0.0/0 0.0.0.0/0
825 87848 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
701 85098 DROP all -- eth0 * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
419 26498 ACCEPT all -- eth1 eth0 192.168.11.0/24 0.0.0.0/0 ctstate NEW
15343 6475800 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- wg0 eth1 0.0.0.0/0 0.0.0.0/0
69 12915 ACCEPT all -- eth1 wg0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Я вижу, что eth1 отправляет пакеты на wg0, но они не возвращаются. Что случилось?
Таблица масок выглядит так:
$> iptables -L -n -x -v -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
742 52126 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE all -- * eth1 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination