On 2022/4/22 17:51, Björn Fries wrote:
Am 22.04.22 um 08:16 schrieb Björn Fries:
the way I solve this is that I use a slightly larger /23-subnet in the
AllowedIPs=192.168.87.0/23
and when I get a local IP inside 192.168.87.0/24 at home, the kernel
automatically uses the more specific route.
an example:
my laptop e.g. has
Address = 172.22.247.58/32
PrivateKey = xxx
[Peer]
PublicKey = xxx
AllowedIPs = 172.22.144.1/32, 192.168.0.0/23
Endpoint = myhomeIP:51820
PersistentKeepalive = 25
172.22.144.1/32 is the wireguard-IP of my wireguard-server at home.
This way I can reach for example my printer at 192.168.0.10 even if I am
on the move, because my wireguard server is installed on my router at
home (Unifi USG-3P).
The printer sends it packets for 172.22.247.58 simply to its default
gateway, which is my router/wg-server, that forwards it over wireguard.
When I'm in my network at home, my laptop gets the IP 192.168.1.72/24
and automatically talks to the other devices in the LAN without taking
the wireguard route, because the subnet is more specific.
I referred to your example and the Android phone is now:
[Interface]
Address = 192.168.19.30/32
DNS = 192.168.87.1, 192.168.87.2
PrivateKey = xxx
[Peer]
PublicKey = xxx
AllowedIPs = 192.168.19.1/32, 192.168.86.0/23
Endpoint = myhomeIP:4999
PresharedKey = xxx
192.168.19.1/32 is my wireguard-IP address of my wireguard-server at home.
It work nicely if the Android phone is on 4G network. But it still
failed when I connect to my LAN's Wi-Fi (no internet accessing and no
LAN accessing). The phone got the LAN IP address 192.168.87.11/24 from
the DHCP server.
Maybe the routing implementation in Android doesn't fit this solution.
Anyway, thank you very much. :)