История изменений
Исправление torm7, (текущая версия) :
Блин, как времени не хватает на всё. Вернулся к теме через полтора месяца, в общем всё заработало. Весь Российский трафик идет через провайдера, весь забугорный через VPN. Кратко, что делал, если кому пригодится:
- создаем правила nftables:
flush ruleset
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname "enp4s0" masquerade
oifname "vpn" masquerade
}
}
table ip fw4 {
set RU_ipv4 {
type ipv4_addr
flags interval
comment "Russian Internet"
}
chain mangle_prerouting {
type filter hook prerouting priority mangle; policy accept;
jump pbr_prerouting comment "Jump into pbr prerouting chain"
}
chain pbr_prerouting {
ip daddr != @RU_ipv4 goto pbr_mark_0x010000 comment "russia"
}
chain pbr_mark_0x010000 {
counter packets 4121 bytes 1637862 meta mark set meta mark & 0xff01ffff | 0x00010000
return
}
}
- приводим
ip rule
к виду:
[rav@router:~]$ ip rule
0: from all lookup local
1: from all lookup main suppress_prefixlength 0
32765: from all fwmark 0x10000/0xff0000 lookup vpn
32766: from all lookup main
32767: from all lookup default
- приводим таблицу маршрутизации VPN к виду:
[rav@router:~]$ ip route show table vpn
default dev vpn scope link
192.168.10.0/24 dev vpn scope link
- наполняем
set RU_ipv4
:
for i in `curl https://stat.ripe.net/data/country-resource-list/data.json?resource=RU | jq -r '.["data"]["resources"]["ipv4"][]'`; do sudo nft add element ip fw4 RU_ipv4 { $i }; done
Исходная версия torm7, :
Блин, как времени не хватает на всё. Вернулся к теме через полтора месяца, в общем всё заработало. Весь Российский трафик идет через провайдера, весь забугорный через VPN. Кратко, что надо делал, если кому пригодится:
- создаем правила nftables:
flush ruleset
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname "enp4s0" masquerade
oifname "vpn" masquerade
}
}
table ip fw4 {
set RU_ipv4 {
type ipv4_addr
flags interval
comment "Russian Internet"
}
chain mangle_prerouting {
type filter hook prerouting priority mangle; policy accept;
jump pbr_prerouting comment "Jump into pbr prerouting chain"
}
chain pbr_prerouting {
ip daddr != @RU_ipv4 goto pbr_mark_0x010000 comment "russia"
}
chain pbr_mark_0x010000 {
counter packets 4121 bytes 1637862 meta mark set meta mark & 0xff01ffff | 0x00010000
return
}
}
- приводим
ip rule
к виду:
[rav@router:~]$ ip rule
0: from all lookup local
1: from all lookup main suppress_prefixlength 0
32765: from all fwmark 0x10000/0xff0000 lookup vpn
32766: from all lookup main
32767: from all lookup default
- приводим таблицу маршрутизации VPN к виду:
[rav@router:~]$ ip route show table vpn
default dev vpn scope link
192.168.10.0/24 dev vpn scope link
- наполняем
set RU_ipv4
:
for i in `curl https://stat.ripe.net/data/country-resource-list/data.json?resource=RU | jq -r '.["data"]["resources"]["ipv4"][]'`; do sudo nft add element ip fw4 RU_ipv4 { $i }; done