Як відкрити певний порт, наприклад 9090, в Google Compute Engine


195

У мене є 2 екземпляри Google Compute Engine, і я хочу відкрити порт 9090 в обох випадках. Я думаю, нам потрібно додати деякі правила брандмауера.

Ви можете мені сказати, як я можу це зробити?


7
Я думаю, на це запитання відповіли. Ви б не хотіли обрати одну з відповідей нижче? Це допомогло б майбутнім читачам легше зрозуміти, що ця проблема вирішена.
modulitos

Йо, Субградіп, оберіть відповідь.
олігофрен

Відповіді:


339

Тобі потрібно:

  1. Перейдіть на cloud.google.com

  2. Ідіть до моєї консолі

  3. Виберіть свій проект

  4. Виберіть Мережа> Мережа VPC

  5. Виберіть "Правила брандмауера"

  6. Виберіть "Створити правило брандмауера"

  7. Щоб застосувати правило для вибору екземплярів VM, виберіть Цілі> "Вказані цільові теги" та введіть у "Цільові теги" назву тегу. Цей тег буде використовуватися для застосування нового правила брандмауера до будь-якого екземпляра. Потім переконайтеся, що до примірників застосовано мережевий тег.

  8. Щоб дозволити вхідні TCP-з'єднання до порту 9090, введіть "Протоколи та порти" tcp:9090

  9. Натисніть Створити

Я сподіваюся, що це вам допоможе.

Оновлення Щоб налаштувати правила, зверніться до документів .


4
Обчислювач не має опції «мережі» (більше?)
AFR

8
Так, зараз немає жодної опції Мережі, оновлений шлях - Проект -> Мережа -> Правила брандмауера
Caio Vertematti

1
У моєму випадку я лише маю, allow httpі allow httpsя додав нове правило брандмауера, але я не можу його знайти. Я також на вільному рівні, якщо це допоможе.
А. L

1
Потрібно дозволити http відкрити порт 80 і дозволити https відкрити 443. Це ярлик.
Carlos Rojas

4
Шлях до меню документів постійно змінюється. Думаю, що важливо вказати на документа у відповіді: cloud.google.com/vpc/docs/using-firewalls
Анупам

82

Ось командний рядок підходу до відповіді на це питання:

gcloud compute firewall-rules create <rule-name> --allow tcp:9090 --source-tags=<list-of-your-instances-names> --source-ranges=0.0.0.0/0 --description="<your-description-here>"

Це відкриє порт 9090для примірників, які ви назвали. Пропускаючи --source-tagsі --source-rangesзастосовуватимете правило до всіх примірників. Більш детальна інформація знаходиться в документації Gcloud та посібнику з firewall-rule createкомандами

Попередні відповіді чудові, але Google рекомендує використовувати новіші gcloudкоманди замість gcutilкоманд.

PS: Щоб зрозуміти правила брандмауера Google, запустіть gcloud compute firewall-rules listі перегляньте всі свої правила брандмауера


Я отримую скарги, коли використовую --descriptionдеталь, але в іншому випадку це працює для мене.
shabbychef

2
Я не впевнений, чи змінили вони api, але джерело та ціль здаються протилежними, ніж відповідь @ modulitos. Згідно з документацією на команду правил брандмауера , sourceозначає вхідний трафік, тоді як targetпосилається на випадки, до яких це правило слід застосувати.
cindyxiaoxiaoli

1
ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission@modulitos
alper

Що таке наступний тест @modulitos? Це telnet :instance_ip :portчи nmap -p :port :instance_ip?
Нам Г ВУ

@alper Ви повинні виконати цю команду раніше: "gcloud auth login" та увійти
Anton

10

Вам потрібно буде додати правило брандмауера, щоб відкрити вхідний доступ tcp:9090до своїх примірників. Якщо у вас є більше двох екземплярів, і ви хочете відкрити лише 9090 для цих двох, ви хочете переконатися, що є тег, яким ці два екземпляри діляться. Ви можете додавати або оновлювати теги через консоль або командний рядок; Я рекомендую використовувати GUI для цього, якщо потрібно, оскільки він обробляє цикл читання-зміна-запис setinstancetags.

Якщо ви хочете відкрити порт 9090 для всіх примірників, ви можете створити правило брандмауера на зразок:

gcutil addfirewall allow-9090 --allowed=tcp:9090

що стосується всіх ваших примірників.

Якщо ви хочете відкрити порт 9090 лише для двох примірників, які обслуговують вашу програму, переконайтеся, що вони мають тег типу my-app, а потім додайте брандмауер так:

gcutil addfirewall my-app-9090 --allowed=tcp:9090 --target_tags=my-app

Більше про створення та керування брандмауерами в GCE можна прочитати тут .


10
gcutilбільше не доступні; будь ласка, перепишіть свої командні рядки, використовуючи gcloud.
Міша Брукман

10

Це питання давнє, і відповідь Карлоса Рохаса хороша, але я думаю, що я повинен написати декілька речей, про які слід пам’ятати, намагаючись відкрити порти.

Перше, що потрібно пам’ятати, це те, що розділ « Мережа» перейменовано на мережу VPC . Тож якщо ви намагаєтеся з’ясувати, де доступний варіант Правил брандмауера , перегляньте мережу VPC .

Друга річ, якщо ви намагаєтесь відкрити порти на Linux VM, переконайтесь, що ні за яких обставин не намагайтеся відкрити порт за допомогою ufwкоманди. Я спробував скористатися цим і втратив доступ ssh до VM. Тому не повторюйте моєї помилки.

Третє - якщо ви намагаєтесь відкрити порти в Windows VM, вам потрібно створити правила брандмауера всередині VM також у брандмауері Windows разом з VPC Networking -> Правилами брандмауера . Порт потрібно відкривати в обох правилах брандмауера, на відміну від Linux VM. Отож, якщо ви не отримуєте доступ до порту за межами VM, перевірте, чи відкрили ви порт як на консолі GCP, так і на брандмауері Windows.

Остання (очевидна) річ - не відкривати порти без потреби. Закрийте порти, як тільки вам це більше не потрібно.

Сподіваюся, ця відповідь корисна.


Хороші поради, за винятком того, що я відкрив деякі ufwкоманди з командою, і я все ще маю доступ до ssh.
stackErr

7

У мене була така ж проблема, як у вас, і я міг її вирішити, дотримуючись інструкцій @CarlosRojas з невеликою різницею. Замість того, щоб створити нове правило брандмауера, я відредагував те, default-allow-internalщоб прийняти трафік з будь-якого місця, оскільки створення нових правил не мало жодної зміни.


Існує плата за створення нового правила брандмауера. Чи вдалося вам уникнути цього, редагуючи це правило?
killjoy

@killjoy Я не впевнений у цьому. Наразі я не використовую google compute engine. Вибачте.
Nevershowmyface

2
Хоча це може працювати, є проблеми щодо безпеки цього методу. Те, що я знайшов для мене, - це використання тегів брандмауера на моїх примірниках. Створюючи правило брандмауера, ви можете створити "Тег цілі" для цього правила. Потім ви можете застосувати цей тег до інстанції VM, який застосує правило до конкретного примірника. Дивіться обслуговується відповідь тут докладніше: stackoverflow.com/questions/31509722 / ...
k00k

7

Створення правил брандмауера

Перегляньте компоненти правила брандмауера [1], якщо ви не знайомі з правилами брандмауера в GCP. Правила брандмауера визначаються на рівні мережі та стосуються лише тієї мережі, де вони створені; однак назва, вибране для кожного з них, повинно бути унікальним для проекту.

Для Cloud Cloud Console:

  1. Перейдіть на сторінку правил брандмауера на консолі платформи Google Cloud.
  2. Натисніть Створити правило брандмауера.
  3. Введіть ім'я для правила брандмауера. Ця назва має бути унікальною для проекту.
  4. Вкажіть мережу, де буде впроваджено правило брандмауера.
  5. Вкажіть пріоритет правила. Чим менше число, тим вище пріоритет.
  6. Для напрямку руху виберіть вхід або вихід.
  7. Для дії на матч виберіть дозволити або відхилити.
  8. Вкажіть цілі правила.

    • Якщо ви хочете, щоб правило застосовувалося до всіх примірників у мережі, виберіть Усі екземпляри в мережі.
    • Якщо ви хочете, щоб правило застосовувалося до вибору екземплярів за мережевими (цільовими) тегами, виберіть "Вказані цільові теги", а потім введіть теги, до яких правило має застосовуватися, у полі "Цільові теги".
    • Якщо ви хочете, щоб правило застосовувалося до вибору екземплярів за пов’язаним обліковим записом служби, виберіть "Вказаний обліковий запис служби", вкажіть, чи є обліковий запис служби в поточному проекті чи інший у межах облікового запису служби та виберіть або введіть ім'я облікового запису служби у службі "Цільова". поле рахунку.
  9. Для правила введення вкажіть джерельний фільтр:

    • Виберіть діапазони IP та введіть блоки CIDR у поле Діапазони IP-джерела, щоб визначити джерело вхідного трафіку за діапазонами IP-адреси. Використовуйте 0.0.0.0/0 для джерела з будь-якої мережі.
    • Виберіть підмережі, а потім позначте ті, які вам потрібні, у спливаючої кнопці підмереж, щоб визначити джерело вхідного трафіку за назвою підмережі.
    • Щоб обмежити джерело тегом мережі, виберіть Теги джерела, а потім введіть теги мережі у поле Джерело тегів. Про обмеження кількості вихідних тегів див. Квоти VPC та обмеження VPC. Фільтрування за тегом джерела доступне лише в тому випадку, якщо ціль не визначена обліковим записом служби. Для отримання додаткової інформації див. Фільтрацію за тегом служби vs.network тегом.
    • Щоб обмежити джерело обліковим записом служби, виберіть Обліковий запис служби, вкажіть, чи є обліковий запис послуги у поточному проекті чи інший у межах області облікового запису служби та виберіть або введіть назву облікового запису служби у полі Джерело облікового запису служби. Фільтрування за обліковим записом джерела послуги доступне лише в тому випадку, якщо ціль не вказана мережевим тегом. Для отримання додаткової інформації див. Фільтрування за обліковим записом послуги та тегом мережі.
    • За бажанням вкажіть Фільтр другого джерела. Фільтри вторинного джерела не можуть використовувати ті самі критерії фільтра, що і первинні.
  10. Для правила виходу вкажіть фільтр призначення:

    • Виберіть діапазони IP та введіть блоки CIDR у поле Діапазони IP-адрес, щоб визначити призначення для вихідного трафіку за діапазонами IP-адрес. Використовуйте 0,0.0,0/0, щоб означати всюди.
    • Виберіть підмережі, а потім позначте ті, які вам потрібні, у спливаючому меню підмереж, щоб визначити призначення для вихідного трафіку за назвою підмережі.
  11. Визначте протоколи та порти, до яких застосовуватиметься правило:

    • Виберіть Дозволити всі або Заборонити всі, залежно від дії, щоб правило застосовувалося до всіх протоколів та портів.

    • Визначте конкретні протоколи та порти:

      • Виберіть tcp, щоб включити протокол TCP та порти. Введіть усі порти або розділені комами, наприклад 20-22, 80, 8080.
      • Виберіть udp, щоб включити протокол UDP та порти. Введіть список портів або розділених комами, наприклад 67-69, 123.
      • Виберіть Інші протоколи, щоб включити протоколи, такі як icmp або sctp.
  12. (Необов’язково) Ви можете створити правило брандмауера, але не застосовувати його, встановивши його стан виконання вимкненим. Клацніть правило «Відключити», а потім виберіть «Відключити».

  13. (Необов’язково) Ви можете ввімкнути реєстрацію правил брандмауера:

    • Клацніть Журнали> Увімкнено.
    • Натисніть Увімкнути.
  14. Натисніть Створити.

Посилання: [1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components


0

Мені довелося це виправити, зменшивши пріоритет (зробивши його вище). Це викликало негайну реакцію. Не те, що я очікував, але це спрацювало.


0

console.cloud.google.com >> виберіть проект >> Мережа> мережа VPC >> брандмауері >> створити брандмауер.

Щоб застосувати правило до примірників VM, виберіть Цілі, "Вказані цільові теги" та введіть у "Цільові теги" назву тегу. Цей тег буде використовуватися для застосування нового правила брандмауера до будь-якого екземпляра.

у "Протоколи та порти" введіть tcp: 9090

Клацніть Зберегти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.