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ごとに
使い方がわかりません。
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
ここでは-を使用します!主に重複によるエラーを無視します。
次のコマンドを試してください。
for ip in $(cat </file.txt>); do ipset -A <set-name> $ip;done
それでもエラーが発生する場合は、高度なテキストエディタ(Notepad ++、SublimeText)でテキストファイルにスペースと読み取り不可能な\奇妙な文字がないか確認してください。スペースと読み取り不可能な\奇妙な文字を削除して、再試行してください。
リストが非常に大きくなっている場合、たとえば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、または他のサービスの遅延が発生しません。