내 VPS에는 두 개의 인터페이스가 있습니다 : eth0
및 eth0:0
. eth0:0
iptables 를 사용하여 포트 80에서 들어오는 패킷을 차단하고 싶습니다 . 나는 이것을 시도했지만 작동하지 않는다 :
iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP
변경 eth0:0
하면 eth0
올바르게 작동합니다. 무엇이 문제입니까?
내 VPS에는 두 개의 인터페이스가 있습니다 : eth0
및 eth0:0
. eth0:0
iptables 를 사용하여 포트 80에서 들어오는 패킷을 차단하고 싶습니다 . 나는 이것을 시도했지만 작동하지 않는다 :
iptables -A INPUT -i "eth0:0" -p tcp --destination-port 80 -j DROP
변경 eth0:0
하면 eth0
올바르게 작동합니다. 무엇이 문제입니까?
답변:
짧은 이야기 : 당신이 한 방식이 정확합니다 (질문에 대한 귀하의 의견에 따라).
긴 이야기 : 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 주소를 일치시킵니다.