From 00a28ca270e7bdd49d7b7e72fb783c8c1be65293 Mon Sep 17 00:00:00 2001 From: Deep Pandya <5146988+deeppandya@users.noreply.github.com> Date: Wed, 1 May 2024 14:04:25 -0400 Subject: [PATCH] Add exclude LAN traffic config for VPN (#23135) --- .../vpn/wireguard/WireguardConfigUtils.java | 9 +++++---- .../browser/vpn/wireguard/WireguardUtils.java | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardConfigUtils.java b/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardConfigUtils.java index 81a67fdf6d3..461dbf88262 100644 --- a/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardConfigUtils.java +++ b/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardConfigUtils.java @@ -28,10 +28,11 @@ public class WireguardConfigUtils { throw new IOException("Configuration file already exists"); } FileOutputStream fileOutputStream = new FileOutputStream(file, false); - Config config = new Config.Builder() - .setInterface(getInterface(address, clientPrivateKey)) - .addPeers(getPeers(host, serverPublicKey)) - .build(); + Config config = + new Config.Builder() + .setInterface(getInterface(address, clientPrivateKey)) + .addPeers(getPeers(host, serverPublicKey, true)) + .build(); fileOutputStream.write(config.toWgQuickString().getBytes(StandardCharsets.UTF_8)); return config; } diff --git a/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardUtils.java b/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardUtils.java index 8a10b784844..c1b26eedfed 100644 --- a/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardUtils.java +++ b/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardUtils.java @@ -41,11 +41,21 @@ public class WireguardUtils { return builder.build(); } - public static List getPeers(String host, String serverPublicKey) + public static List getPeers( + String host, String serverPublicKey, boolean excludeLANTraffic) throws BadConfigException { + String allowedIPs = "0.0.0.0/0, ::/0"; + if (excludeLANTraffic) { + allowedIPs = + "0.0.0.0/5,8.0.0.0/7,11.0.0.0/8,12.0.0.0/6,16.0.0.0/4,32.0.0.0/3,64.0.0.0/2,128.0.0.0/3," + + "160.0.0.0/5,168.0.0.0/6,172.0.0.0/12,172.32.0.0/11,172.64.0.0/10,172.128.0.0/9,173.0.0.0/8," + + "174.0.0.0/7,176.0.0.0/4,192.0.0.0/9,192.128.0.0/11,192.160.0.0/13,192.169.0.0/16,192.170.0.0/15," + + "192.172.0.0/14,192.176.0.0/12,192.192.0.0/10,193.0.0.0/8,194.0.0.0/7,196.0.0.0/6,200.0.0.0/5," + + "208.0.0.0/4,224.0.0.0/3,::/1,8000::/2,c000::/3,e000::/4,f000::/5,f800::/6,fc00::/8,fe00::/7"; + } List peers = new ArrayList<>(); Peer.Builder builder = new Peer.Builder(); - builder.parseAllowedIPs("0.0.0.0/0"); + builder.parseAllowedIPs(allowedIPs); builder.parseEndpoint(host + ":51821"); builder.parsePublicKey(serverPublicKey); peers.add(builder.build());