2014-11-16 6 views
4

내가는 iptables에의 규칙 중 하나를 이해하려고 노력하고 있어요 : 부두 노동자의 NAT 테이블 출력 체인 규칙

$ sudo iptables -t nat --list -v 
... 

Chain OUTPUT (policy ACCEPT 618 packets, 31267 bytes) 
pkts bytes target  prot opt in  out  source    destination 
    0  0 DOCKER  all -- any any  anywhere   !127.0.0.0/8   ADDRTYPE match dst-type LOCAL 

... 

그래서이 규칙은 목적지 주소 유형 "LOCAL"하지 127.0의 범위와 일치하도록 노력하고있다. 0.0/8?

어떤 주소가 일치합니까? 이 규칙의 목적은 무엇입니까?

감사합니다.

답변

8

이 규칙은 127.X.X.X으로 시작하지 않는 로컬로 호스팅 된 IP 주소로 향하는 (OUTPUT 연쇄에 속하기 때문에) 로컬 컴퓨터에서 시작된 모든 패킷과 일치합니다. 이러한 패킷은 추가 처리를 위해 DOCKER 체인으로 전달됩니다.

127.X.X.X으로 시작하지 않는 로컬 호스트 IP 주소는 시스템의 인터페이스에 정의 된 각 IP 주소와 일치합니다. 여기에는 DHCP를 통해 할당 된 것과 같이 동적으로 정의 된 IP 주소도 포함됩니다.

컴퓨터의 로컬 호스트 IP 주소는 ip route show table local type local 명령을 실행하여 추출 할 수 있습니다. 다음

실제로이 규칙에 일치하는 IP 주소를 검사하기 위해

, 로깅 규칙은 DOCKER 체인의 처음에 첨가 될 수있다 :

sudo iptables -t nat -I DOCKER -m limit --limit 2/min -j LOG --log-level 4 --log-prefix 'DOCKER CHAIN ' 

일치하는 패킷에 기록한다 파일 /var/log/syslog.

+0

나는 그것이 ... "iptables matches"이어야한다고 생각하지 않는다고 생각합니다. – otm

+0

내 답변을 수정했습니다. 그것을 검토해주세요 ... – Yoel

+0

아니요,하지만 코멘트는'/ * addrtype --dst-type LOCAL * /' 과 같으며 그 규칙은 다음과 같은 것에서 나온 것입니다 : 'iptables -t nat -A OUTPUT -j DOCKER ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL' – otm