Открытие порта 80 на узле Oracle Cloud Infrastructure Compute

Это элементарный вопрос, но я не могу решить его, просматривая документацию Oracle Cloud Infrastructure. Я создал вычислительный узел на основе Ubuntu, и он подключен к подсети. В этой подсети я создал правило с отслеживанием состояния с источником 0.0.0.0/0, протокол IP: TCP, диапазон портов источника: все, диапазон портов назначения: 80.

На сервере не настроен брандмауэр.

Несмотря на эту конфигурацию, я не могу получить доступ к общедоступному IP-адресу вычислительного узла. Любые идеи?


person Jason    schedule 20.02.2019    source источник


Ответы (7)


При развертывании вычислительных экземпляров в Oracle Cloud Infrastructure необходимо учитывать несколько вещей:

  1. Создайте Интернет-шлюз (IGW).
  2. Определите маршруты, указывающие на IGW.
  3. Разрешить порт 80 в списке безопасности, связанном с IGW. По умолчанию у вас есть доступ только к типам SSH и ICMP 3,4.
  4. Разрешить подключение к брандмауэру экземпляра Compute (который включен по умолчанию).

В вашем примере, если вы используете форму OEL:

$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp

$ sudo firewall-cmd --reload
person IaaSgeek    schedule 22.02.2019
comment
Потрясающие! В моем случае ssh (22) отлично работал, порт 80 - нет. Когда я выполнил все вышеперечисленные шаги (включая шаги firewall-cmd), волшебство произошло! - person kimchoky; 28.09.2019
comment
У меня это сработало, но только после sudo apt install firewalld - person Constructor; 02.11.2019
comment
комментарий выше меня имел все значение, мне тоже пришлось установить брандмауэр - person Yaron Avital; 23.10.2020
comment
@kimchoky да у меня тоже была такая же ситуация. Я не могу понять, почему порт 22 будет обрабатываться по-другому. Доступ по SSH не требовал настройки (кроме ключей). Но для доступа через HTTP потребуется больше правил. Я нахожу это сбивающим с толку, ничего не понимал и до сих пор не могу понять причину разницы. - person Kamafeather; 10.01.2021
comment
Это список безопасности, связанный с vcn - person anand; 21.01.2021
comment
Для тех, кто нашел это сейчас и попытался настроить экземпляр, я обнаружил, следуя документации Oracle по созданию интернет-шлюза (docs.oracle.com/en-us/iaas/Content/Network/Tasks/), что, когда я создал свой первый экземпляр, многое из этого было уже создан автоматически для меня. У меня уже был VCN, список безопасности с несколькими правилами входа, в частности тот, который разрешает SSH (объясняя, как я смог подключиться по SSH к моему серверу, прежде чем заметил, что он не может обслуживать HTTP на порту 80) и интернет-шлюз. Подсеть в VCN уже была связана с интернет-шлюзом через правило маршрутизации. - person Matt Welke; 08.07.2021
comment
Однако, прежде чем я смог достичь своих целей (протестировать обслуживание HTTP на порту 80, установив NGINX, а затем настроив и подключившись к серверу Java Minecraft), мне пришлось выполнить шаги, приведенные в другом ответе здесь, относящемся к iptables. Кроме того, я обнаружил, что не могу подключиться к портам, которые я разблокировал каждый раз, когда экземпляр был остановлен и перезапущен, пока я не запускал на нем команду iptables --flush после каждого перезапуска. Поскольку я не знаю, как работает iptables, это моя следующая вещь, которую я хочу узнать больше, чтобы понять, почему мне пришлось это сделать. - person Matt Welke; 08.07.2021

Я понял. Проблема с подключением возникла из-за того, что Oracle по умолчанию использует iptables для всех образов, предоставленных Oracle. Буквально первое, что я сделал при запуске этого экземпляра, - это проверка ufw, предполагая, что существует несколько ограничений брандмауэра. Состояние ufw было неактивным, поэтому я пришел к выводу, что брандмауэр локально открыт. Поскольку, насколько я понимаю, и ufw, и iptables смотрят на брандмауэр ядра netfilter, и поскольку ufw является де-факто (стандартным?) Брандмауэром в Ubuntu, я понятия не имею, почему они пришли к выводу, что имеет смысл использовать iptables таким образом. Может быть, просто стандартизировать все изображения?

Я узнал о правилах, запустив:

$ sudo iptables -L

Затем я сохранил правила в файл, чтобы потом добавить соответствующие:

$ sudo iptables-save > ~/iptables-rules

Затем я запустил эти правила, чтобы эффективно отключить iptables, пропустив весь трафик:

$ iptables -P INPUT ACCEPT
$ iptables -P OUTPUT ACCEPT
$ iptables -P FORWARD ACCEPT
$ iptables -F

Чтобы очистить сразу все правила iptables, выполните эту команду:

$ iptables --flush

В любом случае, надеюсь, это поможет кому-то другому, потому что документации по этому вопросу не существует.

person Jason    schedule 21.02.2019
comment
Oracle документирует использование iptables вместо ufw и последствия для безопасности открытия iptables для всего трафика в своей документации по передовым методам: docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/ - person QA Automator; 19.05.2020
comment
Ты мой герой, серьезно. Спасибо! - person tisaksen; 26.05.2020
comment
Идеально! Теперь я могу просто использовать ufw - person Pepijn Olivier; 12.06.2020
comment
ПРЕДУПРЕЖДЕНИЕ!!!! Если вы запустите $ iptables --flush, вы потеряете весь доступ к машине, по сути, заблокировав ее !!! - person Him; 06.07.2020
comment
Прекрасно работает. Спасибо. - person Tapan Halani; 09.08.2020
comment
Я бы хотел, чтобы мне не было так сложно найти этот ответ. Я не знаю, зачем Oracle заморачиваться с добавлением правил брандмауэра на сервере, когда все защищено на уровне инфраструктуры. Спасибо! - person GeekLad; 23.10.2020
comment
это должен быть принятый ответ! - person dark_ruby; 16.11.2020
comment
Идеально! Проблема решена! Почему iptables вместо ufw на Ubuntu? Кстати, с iptables у меня нет никаких идей. Как сделать так, чтобы изменения были постоянными? Мне нужно перезапустить команды после перезапуска сервера - person Saquib Ahmed; 02.03.2021

Всегда обращайтесь к официальному руководству: https://docs.cloud.oracle.com/en-us/iaas/developer-tutorials/tutorials/apache-on-ubuntu/01oci-ubuntu-apache-summary.htm

$ sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
$ sudo netfilter-persistent save
$ sudo systemctl restart apache2
person Sum Chen    schedule 29.08.2020
comment
Для моего единственного экземпляра Ubuntu 20.04 я настроил правила Ingress для многих других [требуемый порт приложения], таких как MySQL 3306 и TightVNCServer 5901, но они не вступили в силу. После того, как я выполнил sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport [app required port] -j ACCEPT и sudo netfilter-persistent save, мой экземпляр может быть доступен из Интернета волшебным образом. - person oraclesoon; 16.09.2020

зачислено на https://medium.com/@fathi.ria/oracle-database-cloud-open-ports-on-oci-1af24f4eb9f2

Экземпляр Coumputer (например, Ubuntu) -> Виртуальная облачная сеть -> Список безопасности -> Правила входа -> Добавьте правило, разрешающее доступ к порту 80 из любого места

person new2cpp    schedule 04.10.2019

Предварительные требования

  1. Экземпляр ВМ должен быть создан и запущен
  2. Доступ к открытым и закрытым ключам, используемым при создании экземпляра виртуальной машины.

Войдите в виртуальную машину с помощью SSH и выполните следующую команду

$ sudo iptables --list --line-numbers

Он покажет подробную информацию о цепочке INPUT (политика ACCEPT). Из списка необходимо удалить REJECT all rule in the IPTABLES.

$ sudo iptables -D INPUT <Reject Line number>
e.g.
$ sudo iptables -D INPUT 6

Проверьте, удалено ли правило REJECT

sudo iptables --list --line-numbers 

Получите доступ к списку безопасности по умолчанию и отредактируйте правила входа, чтобы разрешить Интернет-трафик через порт

Отредактируйте правило INGRES. Добавьте CIDR 0.0.0.0/0 TCP Destination 9999 (N): Networking> Virtual Cloud Networks> Virtual Cloud Network Details> Security Lists> Security List Details

Доступ к вашему приложению через веб-браузер

Type http://<public IP address of the VM>:port
person Muthukumar K    schedule 08.10.2019

Думаю, если вы добавите приведенное ниже правило в свой iptables, оно должно сработать; в противном случае вы нарушите другие правила, связанные с подключением блочного тома, которое предварительно настроено на этих образах Oracle.

iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
person vinodh    schedule 16.08.2019
comment
Эта команда работает. Чтобы изменения сохранялись даже после перезагрузки, нам нужно дополнительно запустить: netfilter-persistent save - person WebDev; 22.11.2019
comment
Получил: iptables: Индекс вставки слишком велик. - person user2650501; 09.06.2020
comment
@ user2650501 проблема с индексом связана с указанием позиции 5 для правила, а если вы запустите sudo iptables -L, вы увидите, что ваши текущие правила меньше 4 (вероятно, пустые). - person Kamafeather; 10.01.2021

Возможно, причина в этом, если вы еще не создали Интернет-шлюз. Чтобы подключить VCN к общедоступному Интернету, вам потребуется интернет-шлюз и таблица маршрутов для направления трафика через шлюз.

person lsarecz    schedule 21.02.2019