root@netblog:~# ▮

GeoIP-роутинг с ip rule и ipset на Linux

## Задача Направить трафик к определённым странам через отдельный VPN-интерфейс, не трогая весь остальной трафик. ## Инструменты - `ipset` — хранение больших наборов IP - `ip rule` — политика маршрутизации - `MaxMind GeoLite2` — база данных GeoIP ## Скачиваем и конвертируем базу ```bash mmdbinspect --db GeoLite2-Country.mmdb | jq -r '.[] | select(.Record.Country.IsoCode=="RU") | .Network' > ru_ranges.txt ``` ## Создаём ipset и заполняем ```bash ipset create ru_net hash:net while read net; do ipset add ru_net $net; done < ru_ranges.txt ``` ## Правила iptables и ip rule ```bash ip rule add fwmark 0x100 table 200 ip route add default dev wg0 table 200 iptables -t mangle -A PREROUTING -m set --match-set ru_net dst -j MARK --set-mark 0x100 ``` ## Сохранение при перезагрузке Используйте `ipset save > /etc/ipset.conf` и systemd-unit для восстановления.

$ comments — 0

Комментариев пока нет. Будь первым.

// добавить комментарий