hash:net을 방해할지 여부, 포트는 0.0.0.0/0을 지원합니다.

hash:net을 방해할지 여부, 포트는 0.0.0.0/0을 지원합니다.

ipset 유형 hash:net,port에 0.0.0.0/0을 추가하는 방법이 있습니까? 1-32의 접두사 길이만 지원하는 것 같지만, ipset 해시의 항목이 특정 포트의 모든 IP 트래픽을 지원하도록 하려면 어떻게 해야 합니까? 예를 들어

ipset create testset hash:net,port
ipset add testset 0.0.0.0,22
iptables -I INPUT 1 -m set --match-set testset src, src -j ACCEPT
iptables -I INPUT 2 -j LOG --log-prefix "** FIREWALL **"

아무것도하지 않을 것입니다. SSH 트래픽이 방화벽에 도달하고 로그가 생성됩니다. 0.0.0.0/0은 개정 2의 hash:net,iface에 추가되는 것으로 보이지만 유효한 CIDR 표현으로 허용되지 않습니다. 포트를 bitmap:port에 저장하고 이를 자체 iptables 규칙에 적용할 수 있다는 것을 알고 있습니다. 그러나 일부 포트는 src IP 주소에 신경을 쓰는 반면 다른 포트는 그렇지 않기 때문에 포트를 해시에 저장하고 싶고 0.0.0.0/0에 대해 별도의 세트를 유지하고 싶지 않습니다.

답변1

0.0.0.0의 기본값은 0.0.0.0/32이므로 올바른 구문은 0.0.0.0/0을 사용하는 것입니다. 안타깝게도 이는 지원되지 않습니다.

# ipset add testset 0.0.0.0/0,22
ipset v7.3: The value of the CIDR parameter of the IP address is invalid

당신이 할 수 있는 일은 경로를 재정의할 때 OpenVPN에서 사용되는 것과 동일한 트릭을 사용하는 것입니다: 0.0.0.0/0을 반으로 분할: 0.0.0.0/1 및 128.0.0.0/1:

ipset add testset 0.0.0.0/1,22
ipset add testset 128.0.0.0/1,22

노트:

일반적으로 실행을 위해현지의SSH 서버,iptables매개변수는 아마도 다음과 같을 것입니다:

iptables -I INPUT 1 -m set --match-set testset src,dst -j ACCEPT

우리는 이후입력하다체인, 의미인수하다src,dst원격(소스) IP와 로컬(대상) 포트를 확인한다는 의미이고, src,src원격(소스) IP와 원격(소스) 포트를 확인한다는 의미이다. 유일한 용도는 원격 SSH 서버의 응답 트래픽을 허용하는 것이지만 이는 일반적으로 -m conntrack --ctstate ESTABLISHED다른 곳에서 이미 처리되었습니다.

관련 정보