![여러 IP를 Ipset으로 가져오는 방법은 무엇입니까?](https://linux55.com/image/120892/%EC%97%AC%EB%9F%AC%20IP%EB%A5%BC%20Ipset%EC%9C%BC%EB%A1%9C%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
대신 인쇄 하거나 복원 명령에서 읽을 파일 이름을 지정합니다.stdout
stdin
도움이 되었기를 바랍니다.