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
Комментариев пока нет. Будь первым.