Я пытаюсь настроить сайт 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
Мои вопросы:
0x168
и совпадение метки 0x4000
?IP-пакеты внутри хоста Linux имеют атрибут, называемый меткой пакета . Это просто число.
Эти правила принимают пакеты, которым присвоено значение метки пакета 0x1068 или 0x4000 (в цепочке PREROUTING
цепочек 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
Но этого недостаточно. Вам также нужны правила в другой таблице, которые устанавливают это значение. В противном случае вышеуказанные правила ничего не сделают.