Если в iptables блокируются все входящие соединения (INPUT DROP) и чтобы открыть внешний доступ к MySQL необходимо добавить правила:

iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 10.0.0.0/24:

iptables -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

Сохранить правила фаервола:

iptables-save > /root/dsl.fw

Восстановить правила фаервола к дефолтам:

iptables-restore < /root/dsl.fw

Замечу, для того чтобы открыть внешний доступ, также нужно в конфигурационном файле my.cnf закомментировать строку «bind-address = 127.0.0.1».

Если по умолчанию INPUT ACCEPT, то сначала укажем с каких IP разрешен доступ, а только последним правилом заблокируем всем остальным:

iptables -A INPUT -s 127.0.0.1 -p tcp --destination-port 3306 -j ACCEPT
iptables -A INPUT -s 192.168.1.5 -p tcp --destination-port 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

Например используя nmap можно проверить локально и внешне фильтруется ли доступ:

nmap -p 3306 localhost
nmap -p 3306 192.168.1.5

Либо с помощью внешнего сервиса, например: https://2ip.ua/ru/services/ip-service/port-check

P.S. если установлена хостинг панель, то это не сработает. Например, в ISPManager нужно перейти в System > System > Firewall и добавить порт 3306

Поделиться