Добавление правила в 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).