iptablesは1つの国からのトラフィックのみを許可します。

iptablesは1つの国からのトラフィックのみを許可します。

ある国からのトラフィックだけを許可したいです。

私はオンラインでいくつかの方法を見て読んでいましたが、ほとんどは古いものです(Xtablesアドオンを使用)、残りの半分は不要なIPをブラックリストに追加する方法を示しています。

しかし、これはすべてを1つずつブラックリストに載せる誤ったアプローチです。より良いアプローチは、ホワイトリスト外のすべてのアイテムがブロックされるようにホワイトリストを作成することです。

私はフランスにいます。フランスのクライアント/ユーザーだけがサーバーにアクセスできるようにしたいです。

私の既存のiptablesルールは次のとおりです。

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination xx.xx.xx.xx:80

トラフィックを転送するだけです。

答え1

これが最善の選択であるとは言いませんが、他の実行可能なオプションが見つからない場合は、ダウンロード可能なGeoIPデータベースを使用してIPセットツール。

たとえば、ダウンロードGeolite2データベースCSV形式の国です。ファイルをダウンロードして解凍しました:

wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
unzip GeoLite2-Country-CSV.zip
cd GeoLite2-Country-CSV_20190430

フランスのIDを見つけ、フランスのネットワークのすべての履歴をフィルタリングします。

grep France GeoLite2-Country-Locations-en.csv
3017382,en,EU,Europe,FR,France,1

awk -F, '$2 == 3017382 {print $1}' > french_networks.txt

次のフランスネットワークを含むIPsetを構築しますfrance

ipset create france hash:net
while read network ; do 
    ipset add france $network; 
done < french_networks.txt

iptablesipsetを使用して、フランス語以外のコンテンツを削除するルールを作成します。ローカルネットワークが削除されないように、追加のルールを追加する必要があります。

iptables -A INPUT -m set ! --match-set france src -j DROP

答え2

次のページでは、iptablesを使用してフランスのIPを簡単に入手できます。

https://www.ip2location.com/free/visitor-blocker

そのページで「France」を選択し、出力形式として「Linux iptables Accept」を選択します。

答え3

csfを試してみてください。インストールが簡単で、csfpost.shでiptablesルールを設定できます。 csf.confでFRにCC_ALLOW_FILTERを設定します。ネットワーキング文書と推奨事項を確認してください。自分がロックされている場合に備えて、サーバーのコンソールにアクセスすることをお勧めします。ハハ。

関連情報