Каково значение совпадения меток в IPTABLES?

Я пытаюсь настроить сайт 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

Мои вопросы:

  1. Что это за правила? Что такое соответствие метки 0x168и совпадение метки 0x4000?
  2. Как мне добавить эти правила в свой iptables? Я знаю только, как добавить или удалить стандартные порты tcp/udp из iptables и не могу найти ничего, что могло бы помочь в этом? Как добавить эти правила?
1
25.06.2020, 23:31
1 ответ

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

Но этого недостаточно. Вам также нужны правила в другой таблице, которые устанавливают это значение. В противном случае вышеуказанные правила ничего не сделают.

2
18.03.2021, 23:24

Теги

Похожие вопросы