ipset 유형 hash:net,port에 0.0.0.0/0을 추가하는 방법이 있습니까? 1-32의 접두사 길이만 지원하는 것으로 보이지만 특정 포트의 모든 IP 트래픽을 지원하기 위해 내 ipset 해시의 항목을 원하는 경우 어떻게 해야 합니까? 예를 들어
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은 유효한 CIDR 표기법으로 허용되지 않습니다. 개정 2의 hash:net,iface에 추가한 것 같습니다. 포트를 bitmap:port에 저장하고 자체에 적용할 수 있다는 것을 알고 있습니다. iptables 규칙. 그러나 일부 포트는 src IP 주소에 관심이 있고 다른 포트는 그렇지 않을 수 있으며 0.0.0.0/0에 대해 별도의 세트를 유지하고 싶지 않기 때문에 특히 포트를 해시에 저장하고 싶습니다.
답변1
올바른 구문은 0.0.0.0/0을 사용하는 것입니다. 0.0.0.0의 기본값은 0.0.0.0/32입니다. 아쉽게도 이는 지원되지 않습니다.
# 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
대신 다른 곳에서 이미 처리됩니다.