Load country IP blocks into an nftables verdict map to block (or allow) traffic by country.
sudo ./nft-geoblock.sh [-n name] [-p ports] [-w] CC [CC ...]| Flag | Meaning |
|---|---|
-n name |
Table/map name (default: geoip) |
-p ports |
Comma-separated ports/ranges (e.g. 80,443 or 1000-2000) |
-w |
Whitelist mode (default: blacklist) |
CC |
Two-letter country codes (e.g. DE ES FR) |
# Block DE + RU on all ports
sudo ./nft-geoblock.sh DE RU
# Block CN only on 80/443
sudo ./nft-geoblock.sh -p 80,443 CN
# Allow only FR/ES on 443, drop everyone else
sudo ./nft-geoblock.sh -w -p 443 FR ES- Requires
root,nft, andcurl. - Port 22 (SSH) is never filtered. Without
-pit is auto-exempted; with-pany occurrence of22(incl. inside ranges) aborts the script. - Rules hook
inputatpriority mangle, policyaccept. - IP lists are fetched from
ipdeny.com.