Jak otworzyć określony port, taki jak 9090 w Google Compute Engine

195

Mam 2 instancje Google Compute Engine i chcę otworzyć port 9090 w obu instancjach. Myślę, że musimy dodać kilka reguł zapory.

Czy możesz mi powiedzieć, jak to zrobić?

Subhradip Bose
źródło
7
Myślę, że odpowiedź na to pytanie. Czy mógłbyś wybrać jedną z poniższych odpowiedzi? Pomoże to przyszłym czytelnikom łatwiej rozpoznać, że problem został rozwiązany.
modulitos
Yo, Subhradip, wybierz odpowiedź.
oligofren

Odpowiedzi:

339

Musisz:

  1. Wejdź na cloud.google.com

  2. Przejdź do mojej konsoli

  3. Wybierz swój projekt

  4. Wybierz Sieć> Sieć VPC

  5. Wybierz „Reguły zapór ogniowych”

  6. Wybierz „Utwórz regułę zapory”

  7. Aby zastosować regułę do wybierania wystąpień maszyn wirtualnych, wybierz opcję Cele> „Określone tagi docelowe” i wprowadź w polu „Tagi docelowe” nazwę tagu. Ten znacznik będzie używany do zastosowania nowej reguły zapory do dowolnego wystąpienia. Następnie upewnij się, że instancje mają zastosowany znacznik sieciowy.

  8. Aby zezwolić na przychodzące połączenia TCP do portu 9090, w polu „Protokoły i porty” wpisz tcp:9090

  9. Kliknij Utwórz

Mam nadzieję, że to Ci pomoże.

Aktualizacja Proszę zapoznać się z dokumentami, aby dostosować swoje reguły.

Carlos Rojas
źródło
4
Silnik obliczeniowa nie ma opcji „Sieci” (więcej?)
AFR
8
Tak, teraz nie ma opcji Networks, zaktualizowana ścieżka to Project -> Networking -> Firewall Rules
Caio Vertematti
1
W moim przypadku mam tylko allow httpi allow httpsdodałem nową regułę zapory, ale nie mogę jej znaleźć. Jestem też na darmowym poziomie, jeśli to pomaga.
A. L
1
Musisz zezwolić http na otwarcie portu 80 i zezwolić https na otwarcie 443. Jest to skrót.
Carlos Rojas,
4
Ścieżka menu dokumentów ciągle się zmienia. Ważne jest, aby wskazać dokument w odpowiedzi: cloud.google.com/vpc/docs/using-firewalls
Anupam
82

Oto podejście wiersza polecenia, aby odpowiedzieć na to pytanie:

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>"

Spowoduje to otwarcie portu 9090dla nazwanych wystąpień. Pominięcie --source-tagsi --source-rangesspowoduje zastosowanie reguły do ​​wszystkich instancji. Więcej szczegółów w dokumentacji Gcloud oraz w firewall-rule createpodręczniku poleceń

Poprzednie odpowiedzi są świetne, ale Google zaleca używanie nowszych gcloudpoleceń zamiast gcutilpoleceń.

PS: Aby poznać zasady zapory Google, uruchom gcloud compute firewall-rules listi przejrzyj wszystkie reguły zapory

modulitos
źródło
Dostaję skargi, gdy korzystam z tej --descriptionczęści, ale poza tym to działa dla mnie.
shabbychef
2
Nie jestem pewien, czy zmienili interfejs API, ale źródło i cel wydają się być przeciwne niż odpowiedź @ modulitos. Według dokumentacji polecenia Firewall-rules , sourceoznacza ruch przychodzący natomiast targetodnosi się do przypadków, aby zastosować regułę.
cindyxiaoxiaoli
1
ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission@modulitos
alper
Co to jest test następczy @modulitos? Czy to telnet :instance_ip :portczy nmap -p :port :instance_ip?
Nam G VU
@alper Musisz wykonać tę komendę przed: „login gcloud auth login” i login
Anton Tkachov
10

Musisz dodać regułę zapory, aby otworzyć dostęp tcp:9090do swoich instancji. Jeśli masz więcej niż dwa wystąpienia i chcesz otworzyć dla nich tylko 9090, upewnij się, że istnieje znacznik, który współużytkują te dwa wystąpienia. Możesz dodawać lub aktualizować tagi za pomocą konsoli lub wiersza poleceń; W razie potrzeby polecam użycie GUI, ponieważ obsługuje on cykl odczytu-modyfikacji-zapisu setinstancetags.

Jeśli chcesz otworzyć port 9090 dla wszystkich instancji, możesz utworzyć regułę zapory, np .:

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

które będą miały zastosowanie do wszystkich twoich instancji.

Jeśli chcesz otworzyć port 9090 tylko dla dwóch instancji obsługujących Twoją aplikację, upewnij się, że mają one znacznik podobny do my-app, a następnie dodaj zaporę ogniową w ten sposób:

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

Więcej informacji na temat tworzenia i zarządzania zaporami ogniowymi w GCE można znaleźć tutaj .

E. Anderson
źródło
10
gcutilnie jest już dostępne; proszę przepisać wiersze poleceń za pomocą gcloud.
Misha Brukman
10

To pytanie jest stare i odpowiedź Carlosa Rojasa jest dobra, ale myślę, że powinienem opublikować kilka rzeczy, o których należy pamiętać, próbując otworzyć porty.

Pierwszą rzeczą do zapamiętania jest to, że sekcja Networking została przemianowana na VPC Networking . Jeśli więc próbujesz dowiedzieć się, gdzie jest dostępna opcja reguł zapory , spójrz na sieć VPC .

Po drugie, jeśli próbujesz otworzyć porty na maszynie wirtualnej z systemem Linux, upewnij się, że pod żadnym pozorem nie powinieneś próbować otwierać portu za pomocą ufwpolecenia. Próbowałem tego użyć i utraciłem dostęp ssh do maszyny wirtualnej. Więc nie powtarzaj mojego błędu.

Trzecią rzeczą jest to, że jeśli próbujesz otworzyć porty na maszynie wirtualnej z systemem Windows, musisz utworzyć reguły zapory wewnątrz maszyny wirtualnej, również w zaporze systemu Windows wraz z siecią VPC -> Reguły zapory . Port należy otworzyć w obu regułach zapory, w przeciwieństwie do maszyny wirtualnej z systemem Linux. Jeśli więc nie masz dostępu do portu spoza maszyny wirtualnej, sprawdź, czy port został otwarty zarówno w konsoli GCP, jak i w Zaporze systemu Windows.

Ostatnią (oczywistą) rzeczą jest, aby nie otwierać portów niepotrzebnie. Zamknij porty, gdy tylko nie będziesz już ich potrzebować.

Mam nadzieję, że ta odpowiedź będzie przydatna.

Nowicjusz
źródło
Dobre wskazówki oprócz tego, że otworzyłem niektóre określone porty za pomocą ufwpolecenia i nadal mam dostęp do ssh.
stackErr
7

Miałem ten sam problem co ty i mogłem go rozwiązać, wykonując instrukcje @CarlosRojas z niewielką różnicą. Zamiast tworzyć nową regułę zapory, edytowałem tę, default-allow-internalaby akceptowała ruch z dowolnego miejsca, ponieważ tworzenie nowych reguł nie miało znaczenia.

Nevershowmyface
źródło
Utworzenie nowej reguły zapory jest płatne. Czy udało Ci się tego uniknąć, edytując tę ​​regułę?
killjoy
@killjoy Nie jestem tego pewien. Obecnie nie używam silnika obliczeniowego Google. Przepraszam.
Nevershowmyface,
2
Chociaż może to działać, istnieją obawy dotyczące bezpieczeństwa związane z tą metodą. To, co dla mnie zadziałało, to użycie tagów zapory w moich instancjach. Podczas tworzenia reguły zapory można utworzyć „Tag docelowy” dla tej reguły. Następnie możesz zastosować ten znacznik do wystąpienia VM, które zastosuje regułę do konkretnego wystąpienia. Zobacz zaakceptowaną odpowiedź tutaj: stackoverflow.com/questions/31509722/…
k00k
7

Tworzenie reguł zapory

Zapoznaj się z komponentami reguły zapory [1], jeśli nie znasz zasad zapory w GCP. Reguły zapory są definiowane na poziomie sieci i mają zastosowanie tylko do sieci, w której zostały utworzone; jednak nazwa, którą wybierzesz dla każdego z nich, musi być unikalna dla projektu.

W przypadku konsoli w chmurze:

  1. Przejdź do strony Reguły zapory w konsoli Google Cloud Platform.
  2. Kliknij Utwórz regułę zapory.
  3. Wprowadź nazwę reguły zapory. Ta nazwa musi być unikalna dla projektu.
  4. Określ sieć, w której zostanie zaimplementowana reguła zapory.
  5. Określ priorytet reguły. Im niższa liczba, tym wyższy priorytet.
  6. Jako Kierunek ruchu wybierz wejście lub wyjście.
  7. W polu Akcja podczas meczu wybierz opcję Zezwól lub Odrzuć.
  8. Określ cele reguły.

    • Jeśli chcesz, aby reguła miała zastosowanie do wszystkich instancji w sieci, wybierz Wszystkie instancje w sieci.
    • Jeśli chcesz, aby reguła miała zastosowanie do wybierania wystąpień według znaczników sieciowych (docelowych), wybierz Określone znaczniki docelowe, a następnie wpisz znaczniki, do których reguła powinna się stosować w polu Znaczniki docelowe.
    • Jeśli chcesz, aby reguła miała zastosowanie do wybierania wystąpień według powiązanego konta usługi, wybierz Określone konto usługi, wskaż, czy konto usługi jest w bieżącym projekcie, czy inne w obszarze Zakres konta usługi, a następnie wybierz lub wpisz nazwę konta usługi w usłudze docelowej pole konta.
  9. W przypadku reguły wejściowej określ filtr źródłowy:

    • Wybierz zakresy adresów IP i wpisz bloki CIDR w polu Źródłowe zakresy adresów IP, aby zdefiniować źródło ruchu przychodzącego według zakresów adresów IP. Użyj 0.0.0.0/0 dla źródła z dowolnej sieci.
    • Wybierz podsieci, a następnie zaznacz potrzebne w wyskakującym przycisku Podsieci, aby zdefiniować źródło ruchu przychodzącego według nazwy podsieci.
    • Aby ograniczyć źródło według znacznika sieciowego, wybierz Znaczniki źródłowe, a następnie wpisz znaczniki sieciowe w polu Znaczniki źródłowe. Aby zapoznać się z ograniczeniem liczby znaczników źródłowych, zobacz Przydziały i limity VPC. Filtrowanie według znacznika źródłowego jest dostępne tylko wtedy, gdy cel nie jest określony przez konto usługi. Aby uzyskać więcej informacji, zobacz filtrowanie według konta usługi vs. tag sieci.
    • Aby ograniczyć źródło według konta usługi, wybierz Konto usługi, wskaż, czy konto usługi jest w bieżącym projekcie, czy inne w obszarze Konto usługi, a następnie wybierz lub wpisz nazwę konta usługi w polu Konto usługi źródłowej. Filtrowanie według konta usługi źródłowej jest dostępne tylko wtedy, gdy cel nie jest określony przez tag sieciowy. Aby uzyskać więcej informacji, zobacz filtrowanie według konta usługi vs. tag sieci.
    • W razie potrzeby określ drugi filtr źródłowy. Dodatkowe filtry źródłowe nie mogą używać tych samych kryteriów filtrowania, co podstawowe.
  10. W przypadku reguły wyjścia określ filtr Miejsce docelowe:

    • Wybierz zakresy adresów IP i wpisz bloki CIDR w polu Docelowe zakresy adresów IP, aby zdefiniować miejsce docelowe ruchu wychodzącego według zakresów adresów IP. Użyj 0.0.0.0/0, aby oznaczać wszędzie.
    • Wybierz podsieci, a następnie zaznacz potrzebne w wyskakującym przycisku Podsieci, aby zdefiniować miejsce docelowe ruchu wychodzącego według nazwy podsieci.
  11. Zdefiniuj protokoły i porty, do których będzie stosowana reguła:

    • Wybierz Zezwól wszystkim lub Odrzuć wszystkie, w zależności od akcji, aby reguła miała zastosowanie do wszystkich protokołów i portów.

    • Zdefiniuj określone protokoły i porty:

      • Wybierz tcp, aby dołączyć protokół TCP i porty. Wpisz wszystkie porty rozdzielone przecinkami, takie jak 20-22, 80, 8080.
      • Wybierz udp, aby dołączyć protokół UDP i porty. Wprowadź wszystkie porty rozdzielone przecinkami, takie jak 67-69, 123.
      • Wybierz Inne protokoły, aby dołączyć protokoły takie jak icmp lub sctp.
  12. (Opcjonalnie) Można utworzyć regułę zapory, ale nie można jej wymuszać, ustawiając jej stan wymuszania na wyłączony. Kliknij opcję Wyłącz regułę, a następnie wybierz opcję Wyłączone.

  13. (Opcjonalnie) Możesz włączyć rejestrowanie reguł zapory:

    • Kliknij Dzienniki> Włączone.
    • Kliknij Włącz.
  14. Kliknij Utwórz.

Link: [1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components

Kervin L.
źródło
0

Musiałem to naprawić, zmniejszając priorytet (zwiększając go). Spowodowało to natychmiastową odpowiedź. Nie tego się spodziewałem, ale zadziałało.

justbob
źródło