Назад | Перейти на главную страницу

каковы отношения между зоной и сетевым интерфейсом в firewall-cmd?

У меня есть удаленный хост, работающий на centos 7 с общедоступным IP-адресом 147.38.9.162 и LAN IP 10.5.96.4, соответственно подключенным к eth0 и eth1, я использовал firewall-cmd для настройки сети, как показано ниже:

[root@koala order]# firewall-cmd --get-zone-of-interface=eth0
public
[root@koala order]# firewall-cmd --get-zone-of-interface=eth1
home
[root@koala order]#  ifconfig eth1|grep inet
    inet 10.5.96.4  netmask 255.255.0.0  broadcast 10.5.255.255
[root@koala order]#  ifconfig eth0|grep inet 
    inet 147.38.9.162  netmask 255.255.254.0  broadcast 147.38.9.255
[root@koala order]#      firewall-cmd --list-ports --zone=public
8848/tcp 
[root@koala order]#      firewall-cmd --list-ports --zone=home
8848/tcp 3306/tcp

У меня есть докер-контейнер, в котором запускается java-программа, прослушивающая 8848, и еще один док-контейнер, в котором запускается программа mysql, прослушивающая порт 3306. Я надеюсь открыть порт 3306 для java-программы, но не для внешнего мира, чтобы java-программа может telnet 10.5.96.4:3306, но не 147.38.9.162:3306, поэтому я выполнил следующие команды:

firewall-cmd --zone=home --add-port=3306/tcp --permanent
firewall-cmd --reload

но я не могу telnet mysql из программы java. затем я выполнил следующее, чтобы открыть порт 3306 в общественной зоне

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

теперь я могу telnet mysql из программы java. Мне это кажется странным, потому что я думаю, что зона - это взаимно однозначное сопоставление с интерфейсом (eth0 или eth1), но это не так, что не так?