iptables - время доступа к порту 3306

Я не могу подключиться к mysql с удаленного сервера. я имею bind-address закомментировано, но когда я добавляю правила в iptables для блокировки других соединений, время соединения запрашивающего сервера истекает.

Я попробовал это предложение:

iptables -I INPUT 1 -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 3306 -j DROP

Но моя связь все еще истекает. Неважно, в каком порядке я ввожу эти две строки. Я повторяю IP-адрес удаленного сервера, когда я пытаюсь подключиться, и это действительно IP-адрес, который я использую в моих iptables. Без DROP линия, связь работает нормально, как это происходит, когда в моем iptables ничего нет.

Печать из echo -e "target prot opt source destination\n$(iptables -L INPUT -n | grep 3306)":

target     prot opt source               destination
ACCEPT     tcp  --  1.2.3.4              0.0.0.0/0           tcp dpt:3306 
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306

(выше я заменил фактический IP с 1.2.3.4)

Попытка подключения с другого сервера (VPS) была успешной. Это заставляет меня поверить, что есть проблема с общим сервером, с которого я пытаюсь запросить.

2 ответа

Решение

После промывки iptables, Я использовал iptraf для отображения в реальном времени списка подключений к порту 3306.

Запрашивающий сервер был сервером общего хостинга, и IP-адрес, связанный с запросом, отличался от IP-адреса веб-приложения, инициировавшего запрос. Это было другое И менялось.

Единственным решением было перенести приложение на VPS, который не использует прямой прокси-сервер, или на сервер, который содержал базу данных.

Отдельное спасибо @Jnrprimo за то, что посмотрели на это со мной.

Проблема заключается в порядке правил.

Ввод команд в таком порядке будет таким:

  1. Если порт 3306 DROP
  2. Если порт 3306 и IP-адрес источника 1.2.3.4 ПРИНЯТЬ

Проблема в том, что вы сбрасываете соединение перед проверкой исходного IP-адреса. Это связано с тем, что введенные вами команды предшествуют, а не добавляют правила, поэтому последняя введенная команда становится первым правилом.

Вы можете решить это:

  • Изменение -I на -A (добавить) + Очистить старые цепочки / правила
  • ИЛИ измените порядок ввода команд.
Другие вопросы по тегам