在 Iptables 中,可以使用 geoip 來針對國碼進行 rule 設定。

首先要先安裝 geoip

實驗環境

Linux Kernel
4.0.5

安裝步驟如下:

  • Step 1

啟用 Linux kernel 裡的 CONFIG_NF_CONNTRACK_MARK 這個選項

先檢查當前 kernel config 是否有啟用

grep 'CONFIG_NF_CONNTRACK_MARK' /boot/config-`uname -r`

如果沒有,則編譯 kernel,並啟用:

Networking support -> Networking options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration -> Connection mark tracking support

  • Step 2

接下來要安裝 net-firewall/xtables-addons

首先確認套件相依性,是否有包含 geoip:

sudo equery uses net-firewall/xtables-addons
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for net-firewall/xtables-addons-2.6:
 U I
 
...

+ + xtables_addons_geoip       : match a packet by its source or destination country

...

然後安裝套件:

sudo emerge -a net-firewall/xtables-addons
  • Step 3

進入 /lib64/xtables-addons/ 目錄,執行後續安裝步驟:

過程中會下載並解壓縮檔案,因此必須先確認系統有安裝 gzipunzip*

cd /lib64/xtables-addons/
sudo ./xt_geoip_dl
sudo mkdir -p /usr/share/xt_geoip
sudo ./xt_geoip_build -D /usr/share/xt_geoip *.csv

以上三個步驟即可完成。

使用範例:

sudo iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc TW -j ACCEPT

Reference

Comments

comments powered by Disqus