Почему Docker NAT iptables имеет RETURN в первом ряду? - PullRequest
0 голосов
/ 06 марта 2020

Привет пользователям StackOverflow.

Сейчас я изучаю docker nat network, особенно в iptables.

Я выполнил команду docker, как показано ниже. Сделайте его доступным с удаленного сервера.

docker run -d -p 32170:80 --name nginx_server nginx

Когда я исследую таблицу iptables nat. Я нашел что-то странное.

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !localhost/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        anywhere            
RETURN     all  --  192.168.123.0/24     base-address.mcast.net/24 
RETURN     all  --  192.168.123.0/24     255.255.255.255     
MASQUERADE  tcp  --  192.168.123.0/24    !192.168.123.0/24     masq ports: 1024-65535
MASQUERADE  udp  --  192.168.123.0/24    !192.168.123.0/24     masq ports: 1024-65535
MASQUERADE  all  --  192.168.123.0/24    !192.168.123.0/24    
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:5000
MASQUERADE  tcp  --  172.17.0.3           172.17.0.3           tcp dpt:http

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
DNAT       tcp  --  anywhere             anywhere             tcp dpt:5000 to:172.17.0.2:5000
DNAT       tcp  --  anywhere             anywhere             tcp dpt:32170 to:172.17.0.3:80

Когда я искал, пакет сначала зарегистрировался PREROUTING. Таким образом, его правило, как показано ниже, и пакет должен go to DOCKER цепочка.

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

После того, как он пришел в DOCKER цепочку. Мой вопрос здесь ... Как показано ниже, все пакеты сопоставляются с RETURN и возвращаются к предыдущей цепочке. Если это правильно, то когда его исходный адрес изменяется на docker контейнер и когда его порт изменяется на docker порт?

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

Подводя итог, у меня есть два вопроса

  1. Что означает ADDRTYPE match dst-type LOCAL?
  2. Когда и где внешний источник и порт пакета будут изменены в iptables?
  3. Есть ли какие-либо ссылки на iptables NAT в docker ?
...