web-dev-qa-db-ja.com

複数のIPをIpsetにインポートする方法は?

Ubuntuサーバーファイアウォールでipsetとともにiptablesを使用しています。 IPのリストを含むファイルをipsetにインポートするコマンドがあるかどうか疑問に思っています。 IPセットにデータを入力するために、現在、次のコマンドを使用して各IPを追加しています。

ipset add manual-blacklist x.x.x.x

ファイルのインポートなど、1つのコマンドで複数のIPを追加できると非常に便利です。

コマンドで

 for ip in `cat /home/paul/ips.txt`; do ipset add manual-blacklist $ip;done

私はこの応答を受け取ります

resolving to IPv4 address failed to parse 46.225.38.155

ips.txtのIPごとに

使い方がわかりません。

1
byte00

Ipset save/restoreコマンドを使用できます。

ipset save manual-blacklist

上記のコマンドを実行して、保存ファイルを作成する方法を確認できます。

出力例:

create manual-blacklist hash:net family inet hashsize 1024 maxelem 65536 
add manual-blacklist 10.0.0.1 
add manual-blacklist 10.0.0.2

そして、以下のコマンドでそれを復元します。

ipset restore -! < ips.txt

ここでは-を使用します!主に重複によるエラーを無視します。

7
ibrahim

次のコマンドを試してください。

for ip in $(cat </file.txt>); do ipset -A <set-name> $ip;done

それでもエラーが発生する場合は、高度なテキストエディタ(Notepad ++、SublimeText)でテキストファイルにスペースと読み取り不可能な\奇妙な文字がないか確認してください。スペースと読み取り不可能な\奇妙な文字を削除して、再試行してください。

0
ell

リストが非常に大きくなっている場合、たとえば200 000行以上で、これをサポートするのに十分なメモリがサーバーにある場合は、このワンライナーサイクル全体をNiceで実行することをお勧めします。

Nice -n 5 bash -c "for IP in \$(cat textfile.txt); do ipset add <setname> \$IP -exist timeout <seconds>; done"

その後、他のサービスがbashからステップアップでき、bashがすべてのリソースを使用しているため、ネットワーク、mysql、Apache、または他のサービスの遅延が発生しません。

0
AgentDeus