fix: default gateway not detected on linux

Massimo Melina committed Jul 20, 2026 at 11:33 UTC e76365669ca864e368eb464794053bbe97df60b7
1 file changed +4 -2
src/nat.ts
+4 -2
@@ -146,8 +146,10 @@ function findGateway(): Promise<string | undefined> {
146 return new Promise((resolve, reject) =>
147 exec(IS_WINDOWS || IS_MAC ? 'netstat -rn' : 'route -n', (err, out) => {
148 if (err) return reject(err)
149 - if (!IS_WINDOWS)
150 - return resolve(out.match(IS_MAC ? /default +([\d.]+)/ : /^0\.0\.0\.0 +([\d.]+)/)?.[1])
149 + if (!IS_WINDOWS) {
150 + // linux route output starts with headers, so its default-route pattern must be multiline
151 + return resolve(out.match(IS_MAC ? /default +([\d.]+)/ : /^0\.0\.0\.0 +([\d.]+)/m)?.[1])
152 + }
153 const sortedByMetric = _.sortBy([...out.matchAll(/(?:0\.0\.0\.0 +){2}([\d.]+)\s+[\d.]+\s+(\d+)/g)], x => Number(x[2]))
154 resolve(sortedByMetric[0]?.[1]) // take ip with lowest metric
155 }) )