여러 IP를 Ipset으로 가져오는 방법은 무엇입니까?

여러 IP를 Ipset으로 가져오는 방법은 무엇입니까?

Ubuntu 서버 방화벽에서 iptables와 ipset을 사용하고 있습니다. ips 목록이 포함된 파일을 ipset으로 가져오는 명령이 있는지 궁금합니다. ipset을 채우기 위해 이제 다음을 사용하여 각 IP를 추가합니다.

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

단일 명령(예: 파일 가져오기 등)을 사용하여 여러 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

ipset 저장/복원 명령을 사용할 수 있습니다.

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

여기서는 주로 중복으로 인한 오류를 무시하기 위해 -!를 사용합니다.

답변2

다음 명령을 시도해 보세요.

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

오류가 지속되면 고급 텍스트 편집기(Notepad++, SublimeText)에서 텍스트 파일에 공백과 읽을 수 없는\이상한 문자가 있는지 확인하세요. 공백과 읽을 수 없는\이상한 문자를 제거하고 다시 시도하십시오.

답변3

목록이 200,000행 이상으로 매우 커지고 서버에 이를 지원할 만큼 충분한 메모리가 있는 경우 Nice를 사용하여 전체 oneliner 주기를 실행하는 것이 좋습니다.

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

그런 다음 다른 서비스를 bash에서 업그레이드할 수 있으며 bash가 모든 리소스를 사용하기 때문에 네트워크나 mysql, apache 또는 기타 서비스 지연이 발생하지 않습니다.

답변4

나는 이것이 몇 년 전의 일이라는 것을 알고 있지만 모든 IP 주소를 사용하여 간단한 쉘 스크립트를 만들고 해당 쉘 스크립트를 실행하는 것은 어떨까요? 이런 식으로 수백 개의 IP 주소를 추가했습니다.

예: ( Centos 8에서 vi편집기를 사용하여 수행됨 )

vi manual-blacklist.sh

그런 다음 manual-blacklist.sh다음과 같이 파일에 모든 IP 주소를 추가하십시오. i(줄을 삽입하려면 키를 누르십시오 .)

ipset add manual-blacklist 123.45.67.111
ipset add manual-blacklist 123.45.67.112
ipset add manual-blacklist 123.45.67.113

모든 IP 주소가 추가될 때까지 계속됩니다. 작업 속도를 높이기 위해 Excel을 사용하여 IP 주소 목록을 만든 다음 이를 텍스트 파일로 내보낸 다음 복사하여 셸 스크립트 파일에 붙여넣었습니다.

문서를 저장합니다. ESC키를 누른 다음 :wq!Enter를 눌러 파일을 저장합니다.

그런 다음 다음을 사용하여 실행하십시오.

./manual-blacklist.sh

모든 IP 주소가 수동 블랙리스트 ipset 파일에 추가됩니다. 중복된 항목이 발견되면 이전에 추가된 항목이므로 무시됩니다.

그런 다음 이 파일을 저장합니다. (저는 이를 홈 디렉터리와 기타 디렉터리에 저장합니다.)

ipset save > /etc/ipset.conf
ipset save > /home/username/ipset.conf

복원:

ipset restore -f /etc/ipset.conf

이 스위치는 목록 또는 저장 명령 -f대신 인쇄 하거나 복원 명령에서 읽을 파일 이름을 지정합니다.stdoutstdin

도움이 되었기를 바랍니다.

관련 정보