Rancher 사이트를 설정하고 네트워크가 작동하도록 하려고 합니다. 내 상태 확인 컨테이너가 "호스트에 대한 경로 없음"으로 인해 실패합니다. IPTABLE 규칙을 실행 중인 Rancher 사이트와 비교한 결과 실행 중인 Rancher 사이트에 설정된 다음 규칙을 발견했습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
CATTLE_NETWORK_POLICY all -- 10.42.0.0/16 10.42.0.0/16
CATTLE_FORWARD all -- anywhere anywhere
Chain CATTLE_FORWARD (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere mark match 0x1068
ACCEPT all -- anywhere anywhere mark match 0x4000
$ iptables-save | grep mark
-A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 500 -j MARK --set-xmark 0x1068/0xffffffff`
-A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 4500 -j MARK --set-xmark 0x1068/0xffffffff
-A CATTLE_FORWARD -m mark --mark 0x1068 -j ACCEPT
-A CATTLE_FORWARD -m mark --mark 0x4000 -j ACCEPT
내 질문:
- 이 규칙은 무엇입니까?
mark match 0x168
그리고 는 무엇입니까mark match 0x4000
? - 내 iptables에 이러한 규칙을 어떻게 추가합니까? iptables에서 표준 tcp/udp 포트를 추가하거나 제거하는 방법만 알고 있는데 이와 관련된 내용을 찾을 수 없습니까? 이러한 규칙을 어떻게 추가하나요?
답변1
Linux 호스트 내의 IP 패킷에는 다음과 같은 패킷이 있습니다.패키지 태그. 그것은 단지 숫자일 뿐입니다.
PREROUTING
이러한 규칙은 0x1068 또는 0x4000( 또는 체인에서)의 패킷 태그 값이 할당된 mangle
패킷을 허용합니다.raw
nat
이 규칙을 추가하세요
나는 당신이 표 CATTLE_FORWARD
에서 규칙을 찾았고 표 에서 규칙을 찾았다 filter
고 가정합니다 .CATTLE_RAW_PREROUTING
raw
# create the chain CATTLE_FORWARD
iptables -N CATTLE_FORWARD
iptables -t raw -N CATTLE_RAW_PREROUTING
# add the rules
iptables -A CATTLE_FORWARD -m mark --mark 0x1068 -j ACCEPT
iptables -A CATTLE_FORWARD -m mark --mark 0x4000 -j ACCEPT
iptables -t raw -A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 500 -j MARK --set-xmark 0x1068/0xffffffff
iptables -t raw -A CATTLE_RAW_PREROUTING ! -i docker0 -p udp -m udp --dport 4500 -j MARK --set-xmark 0x1068/0xffffffff
그러나 이것만으로는 충분하지 않습니다. 값을 설정하려면 다른 테이블의 규칙도 필요합니다. 그렇지 않으면 위의 규칙이 적용되지 않습니다.