Provozuji dvě Omnie jako hraniční zařízení dvou domácích sítí. Rád bych tyto dvě sítě propojil pomocí Wireguardu. Schéma vypadá zhruba takto:
------------------ --------------- ---------------- ------------------
| DMZ 1 | | Omnia 1 WG | | Omnia 2 WG | | DMZ 2 |
| 10.112.26.0/24 | <-->| 10.112.27.1 | <-------> | 10.112.27.7 | <-->| 10.112.28.0/24 |
------------------ --------------- ---------------- ------------------
\-----------v----------/ Internet \-----------v----------/
Omnia 1 Omnia 2
Každý z obdélníků výše je jedno “rozhraní”, zároveň i “zóna” ve firewallu. V rámci každé Omnie je nastaven forwarding mezi zónami.
Wireguard mám myslím nastaven správně, ping z 10.112.27.1 na 10.112.27.7 (a naopak) funguje správně.
Na každé Omnii jsem přidal do konfigurace následující route:
//na Omnii 1
config route
option target '10.112.28.0'
option netmask '255.255.255.0'
option interface 'wg0'
option gateway '10.112.27.1'
//na Omnii 2
config route
option target '10.112.26.0'
option gateway '10.112.27.7'
option netmask '255.255.255.0'
option interface 'wg0'
Bohužel se mi ale nedaří nastavit vše tak, aby mi procházela data z DMZ 1 do DMZ 2. Vlastně se mi nedaří ani pingnout z Omnie 1 na stroj v síti DMZ 2.
//na Omnii 1 - ping na WG funguje:
root@omnia:~# ping 10.112.27.7
PING 10.112.27.7 (10.112.27.7) 56(84) bytes of data.
64 bytes from 10.112.27.7: icmp_req=1 ttl=64 time=74.1 ms
64 bytes from 10.112.27.7: icmp_req=2 ttl=64 time=68.4 ms
64 bytes from 10.112.27.7: icmp_req=3 ttl=64 time=68.2 ms
root@omnia:~# ping 10.112.28.1
PING 10.112.28.1 (10.112.28.1) 56(84) bytes of data.
From 10.112.27.1 icmp_seq=1 Destination Host Unreachable
From 10.112.27.1 icmp_seq=1 Destination Host Unreachable
From 10.112.27.1 icmp_seq=1 Destination Host Unreachable
// tato zprava se opakuje ve velmi rychlem sledu mnohokrat
Nastaveni route na Omnii 1:
root@omnia:~# ip -4 route
default via xx.yyy.zz.xx dev eth2 proto static
10.112.27.0/24 dev wg0 proto static scope link
10.112.28.0/24 via 10.112.27.1 dev wg0 proto static
Na co jsem zapomněl?
Edit 1
První věc, na kterou jsem zapomněl, byly Allowed IPs v rámci konfigurace wireguardu. Přidal jsem na první Omnii
list allowed_ips '10.112.28.0/24'
A nyní už projde ping na interface DMZ 2:
root@omnia:~# ping 10.112.28.1
PING 10.112.28.1 (10.112.28.1) 56(84) bytes of data.
64 bytes from 10.112.28.1: icmp_req=1 ttl=64 time=51.1 ms
64 bytes from 10.112.28.1: icmp_req=2 ttl=64 time=17.7 ms
Nicméně na jiné stroje na daném rozhraní stále nic:
root@omnia:~# ping 10.112.28.101
PING 10.112.28.101 (10.112.28.101) 56(84) bytes of data.
^C
--- 10.112.28.101 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9402ms
Když dám tcpdump na Omnii 2
root@omnia-2:~# tcpdump -i wg0 "icmp"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on home_link, link-type RAW (Raw IP), capture size 262144 bytes
18:03:06.742475 IP 10.112.27.1 > 10.112.28.101: ICMP echo request, id 12186, seq 1, length 64
18:03:07.758270 IP 10.112.27.1 > 10.112.28.101: ICMP echo request, id 12186, seq 2, length 64
18:03:08.795133 IP 10.112.27.1 > 10.112.28.101: ICMP echo request, id 12186, seq 3, length 64