내 iptables 규칙이 작동하지 않는 이유는 무엇입니까?


9

내 VPS에는 두 개의 인터페이스가 있습니다 : eth0eth0:0. eth0:0iptables 를 사용하여 포트 80에서 들어오는 패킷을 차단하고 싶습니다 . 나는 이것을 시도했지만 작동하지 않는다 :

iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP

변경 eth0:0하면 eth0올바르게 작동합니다. 무엇이 문제입니까?


4
내 방식으로 내 질문을 해결했습니다. 내 인터페이스가 가상이므로 iptables가 액세스 할 수 없으므로 인터페이스 이름이 아닌 인터페이스의 IP로 인터페이스를 차단했습니다. 내 명령은 다음과 같습니다. iptables -A INPUT -p tcp --dport 80 -d {ETH0 : 0의 IP} -j 거부
sinoohe

답변:


6

짧은 이야기 : 당신이 한 방식이 정확합니다 (질문에 대한 귀하의 의견에 따라).

긴 이야기 : Linux에서 네트워크 '장치' foo:bar는 'foo'인터페이스에 여러 네트워크 설정을 할당해야 할 때 사용되는 'foo'의 별칭입니다. 예를 들어 동일한 회선의 여러 서브넷에서 응답해야합니다.

이 작업은 번거롭고 부팅에 일관성이 없습니다. IPv6의 경우 eth0 인터페이스에 지정된 모든 주소가 eth0 항목 아래에 함께 나열됩니다. ip addr명령을 통해이를 수행하는보다 현대적인 방법이 있습니다.

별칭 인터페이스에는 :이름에 콜론이 있고 콜론 왼쪽 부분은 기존 인터페이스 이름이며, 인터페이스 스탠자 ifconfig는 매우 짧기 때문에 별명 인터페이스를 발견 할 수 있습니다 . 는 HWaddr또한 '부모'인터페이스와 동일해야한다. 또한에 나열되지 않습니다 /proc/net/dev. 말하자면 ip addr, eth0:0인터페이스의 두 번째 주소로 표시됩니다 eth0. (로 시작되는 들여 쓰기 행을 찾으십시오 inet)

별칭과 해당 부모는 물리적 계층을 공유하므로 많은 설정과 필드를 공유합니다. 커널은 그것들을 완전히 별개의 인터페이스로 취급하지 않습니다. 우선 트래픽이 별칭이 아닌 상위 인터페이스 에 나타납니다 . 별칭에 패킷 / 바이트 카운터가없는 것을 알 수 있습니다!

별칭 인터페이스에서 트래픽, 방화벽 등을 스니핑해야하는 경우 대신 상위를 사용해야합니다. 별칭과 상위의 차이점은 IPv4 설정뿐이므로 별칭의 트래픽을 일치시키는 유일한 방법은 해당 IP 설정을 사용하는 것입니다. 을 사용 iptables하면 주석에서 답한 것처럼 별칭의 IPv4 주소를 일치시킵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.