iptables 규칙에서 실제 호스트 IP가 제거되는 이유

iptables 규칙에서 실제 호스트 IP가 제거되는 이유

이 규칙을 iptables에 추가했습니다.

iptables -A INPUT -s 192.168.0.100/24 -p tcp --dport 27 -j ACCEPT

내가 본 iptables 규칙을 나열했을 때 놀랍게도 소스 값은 다음과 같습니다.

192.168.0.0/24

왜?

답변1

192.168.0.100/24하나가 될 수 있다속기192.168.100/255.255.255.0의 경우 - IP 주소 192.168.0.100 및 넷마스크 255.255.255.0으로 장치를 구성합니다. 이것은 아마도 당신이 기대하는 것일 것입니다. 그러나 iptables가 그것을 사용하는 방식은 아닙니다. 전체 네트워크가 아닌 특정 호스트만 허용하려면 마스크를 생략하세요(또는 를 사용하는 /32것도 마찬가지입니다).

엄밀히 말하면 매뉴얼 페이지에 따르면 오류가 발생할 수 있습니다.

  [!] -s, --source address[/mask][,...]
          Source specification. Address can be either a network name, a hostname, a  network
          IP  address  (with  /mask), or a plain IP address. Hostnames will be resolved once

마스크는 네트워크 IP 주소에만 사용할 수 있으며 192.168.0.100은 그 중 하나가 아닙니다(/24 네트워크의 경우). 네트워크 주소는 사용자에게 반환되는 주소(192.168.0.0/24)입니다.

이는 다음과 같은 질문을 제기합니다.네트워크 IP 주소란 무엇입니까?

장치/컴퓨터는 다른 주소가 동일한 네트워크에 있는지(직접 통신할 수 있도록) 또는 다른 네트워크에 있는지(따라서 게이트웨이를 통과해야 함) 알아야 합니다. 작동 방식은 네트워크 주소, 넷마스크 및 일부 이진 연산을 기반으로 동일한 네트워크의 IP 주소 범위를 고려하는 것입니다. 특정 IP 주소가 있는 네트워크를 찾으려면 이진 연산을 수행하고 이를 네트워크 마스크와 비교합니다(두 주소를 이진 형식으로 정렬하고 둘 다 1이면 1을 쓰고 그렇지 않으면 0을 씁니다). 넷마스크는 항상 1과 0으로 구성되므로 1의 수를 세어 이를 축약합니다. /24는 24개의 1과 8개의 0을 의미합니다(IPv4의 길이는 32비트입니다).

  (192)    (168)    (0)      (100)
  11000000 10101000 00000000 01100100
& 11111111 11111111 11111111 00000000
= 11000000 10101000 00000000 00000000  = 192.168.0.0

192.168.0.1–255를 시도하면 둘 다 동일한 응답을 얻는다는 것을 알 수 있습니다. 이것이 바로 둘이 동일한 네트워크에 있는 것으로 간주되는 이유입니다.

관련 정보