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
}) )