diff --git a/tun_linux.go b/tun_linux.go index abca009..e4d1044 100644 --- a/tun_linux.go +++ b/tun_linux.go @@ -630,6 +630,23 @@ func (t *NativeTun) rules() []*netlink.Rule { it.Family = unix.AF_INET6 rules = append(rules, it) } + // Fallback rules after system default rules (32766: main, 32767: default) + // Only reached when main and default tables have no route + const fallbackPriority = 32768 + if p4 { + it = netlink.NewRule() + it.Priority = fallbackPriority + it.Table = t.options.IPRoute2TableIndex + it.Family = unix.AF_INET + rules = append(rules, it) + } + if p6 { + it = netlink.NewRule() + it.Priority = fallbackPriority + it.Table = t.options.IPRoute2TableIndex + it.Family = unix.AF_INET6 + rules = append(rules, it) + } return rules }