Добавление правила в iptables в debian для открытия нового порта
Я пытаюсь открыть порт 3306 в iptables в моей системе Debian, чтобы разрешить доступ к серверу MySQL. Для чего я ввел эту команду:
[email protected]:/# sudo iptables -A INPUT -p tcp --dport 3306 ACCEPT
[email protected]:/# iptables-save
Я ввел новое соединение, и оно было сохранено в iptables, так как я вижу новое правило в списке iptables, которое генерируется командой iptables-save.
Однако эта debian-система работает на виртуальной машине поверх Windows7, и я не могу подключиться к ней через telnet из Windows. Не уверен, где я должен проверить решение этой проблемы.
Ответы
Ответ 1
О вашей командной строке:
[email protected]:/# sudo iptables -A INPUT -p tcp --dport 3306 --jump ACCEPT
[email protected]:/# iptables-save
-
Вы уже прошли аутентификацию как root
, поэтому sudo
там избыточно.
-
Вам не хватает -j
или --jump
непосредственно перед параметром ACCEPT
(просто это была опечатка, и вы вставляете ее правильно).
О вашем вопросе:
Если вы правильно вставляете правило iptables
, как вы указали в вопросе, возможно, проблема связана с гипервизором (поставщиком виртуальных машин), который вы используете.
Если вы предоставляете имя гипервизора (VirtualBox, VMWare?), я могу продолжить руководство по этому вопросу, но вот несколько советов, которые вы можете попробовать в первую очередь:
проверьте настройки сети vmachine и:
-
если он установлен на NAT, тогда вы не сможете подключиться с базовой машины к vmachine.
-
если он настроен на Hosted, вам нужно сначала настроить его сетевые настройки, как правило, предоставить им IP-адрес в диапазоне 192.168.56.0/24, поскольку по умолчанию для этого используются гипервизоры.
-
если он установлен на Bridge, то же, что и Hosted, но вы можете настроить его, когда диапазон IP имеет смысл для вашей конфигурации.
Надеюсь, что это поможет.
Ответ 2
(Я предполагаю, что вы пришли к выводу, что это проблема iptables, полностью отключив брандмауэр (iptables -P INPUT ACCEPT; iptables -P OUTPUT ACCEPT; iptables -F) и подтвердил, что вы можете подключиться к серверу MySQL с вашего Windows?)
Некоторое предыдущее правило в таблице INPUT, вероятно, отклоняет или отбрасывает пакет. Вы можете обойти это, вставив новое правило вверху, хотя вы можете просмотреть существующие правила, чтобы увидеть, насколько это разумно:
iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT
Обратите внимание, что iptables-save не сохранит новое правило настойчиво (например, при перезагрузках) - вам нужно выяснить что-то еще для этого. Мой обычный маршрут заключается в том, чтобы сохранить вывод iptables-save в файле (/etc/network/iptables.rules или аналогичный), а затем загружать с помощью инструкции предварительной настройки в/etc/network/interfaces).