На vagrant
Ubuntu 18.04.02 box
root@ubuntu-bionic:~# ss -tulanp | grep -i 3306
root@ubuntu-bionic:~# docker run -d --rm -e "MYSQL_ROOT_PASSWORD=root" -p 3306:3306 -v mysql_volume:/var/lib/mysql --name test_mysql mysql:5.7
29401546117d55b5b8d122a225352a6534cf8a9bbb611a195adbbe3ff7341909
root@ubuntu-bionic:~# ss -tulanp | grep -i 3306
tcp LISTEN 0 128 *:3306 *:* users:(("docker-proxy",pid=1986,fd=4))
root@ubuntu-bionic:~# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports: 3306/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
root@ubuntu-bionic:~# hostname -I
10.0.2.15 192.168.33.10 172.17.0.1
Затем на моем хост-компьютере:
/home/pkaramol/VirtualBox VMs
$ nc -zv -w 2 192.168.33.10 3306
Connection to 192.168.33.10 3306 port [tcp/mysql] succeeded!
Сейчас я попытаюсь удалить порт 3306
, который я явно добавил:
обратно на мой vagrant
машина:
root@ubuntu-bionic:~# firewall-cmd --remove-port=3306/tcp --zone=public --permanent
success
root@ubuntu-bionic:~# firewall-cmd --reload
success
root@ubuntu-bionic:~# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Вернуться к моей основной машине:
$ nc -zv -w 2 192.168.33.10 3306
Connection to 192.168.33.10 3306 port [tcp/mysql] succeeded!
Почему перезагрузка не делает новое состояние применимым сразу?
Проблема исчезает после перезагрузки vagrant
машины, и в этом случае я получаю
$ nc -zv -w 2 192.168.33.10 3306
nc: connect to 192.168.33.10 port 3306 (tcp) failed: Connection refused
Я не сталкивался с такой проблемой. Просто предположение, но что произойдет, если вы попытаетесь (Это не рекомендуемая практика )firewall-cmd --complete-reload
, которая перезагружает даже фильтры ядра и разрывает любое соединение