Cách mở một cổng cụ thể như 9090 trong Google Compute Engine


195

Tôi có 2 phiên bản Google Compute Engine và tôi muốn mở cổng 9090 trong cả hai trường hợp. Tôi nghĩ rằng chúng ta cần thêm một số quy tắc tường lửa.

Bạn có thể cho tôi biết làm thế nào tôi có thể làm điều đó?


7
Tôi nghĩ rằng câu hỏi này đã được trả lời. Bạn có phiền khi chọn một trong những câu trả lời dưới đây không? Nó sẽ giúp độc giả tương lai dễ dàng nhận ra rằng vấn đề này đã được giải quyết.
modulitos

Yo, Subhradip, chọn một câu trả lời.
oligofren

Câu trả lời:


339

Bạn cần phải:

  1. Truy cập cloud.google.com

  2. Chuyển đến Bảng điều khiển của tôi

  3. Chọn dự án của bạn

  4. Chọn Mạng> Mạng VPC

  5. Chọn "quy tắc tường lửa"

  6. Chọn "Tạo quy tắc tường lửa"

  7. Để áp dụng quy tắc để chọn phiên bản VM, chọn Mục tiêu> "Thẻ mục tiêu được chỉ định" và nhập vào "Thẻ mục tiêu" tên của thẻ. Thẻ này sẽ được sử dụng để áp dụng quy tắc tường lửa mới cho bất kỳ trường hợp nào bạn muốn. Sau đó, đảm bảo các trường hợp có thẻ mạng được áp dụng.

  8. Để cho phép các kết nối TCP đến tới cổng 9090, hãy nhập "Giao thức và cổng" tcp:9090

  9. Nhấp vào Tạo

Tôi hy vọng cái này sẽ giúp bạn.

Cập nhật Vui lòng tham khảo tài liệu để tùy chỉnh các quy tắc của bạn.


4
Công cụ tính toán không có tùy chọn "mạng" (nữa?)
Afr

8
Có, hiện tại không có tùy chọn Mạng, đường dẫn được cập nhật là Dự án -> Mạng -> Quy tắc tường lửa
Caio Vertematti

1
Trong trường hợp của tôi, tôi chỉ có allow httpallow httpstôi đã thêm một quy tắc tường lửa mới nhưng dường như tôi không thể tìm thấy nó. Tôi cũng đang ở trên tầng miễn phí, nếu nó giúp.
A. L

1
Bạn cần cho phép http để mở cổng 80 và cho phép https mở 443. Đây là một phím tắt.
Carlos Rojas

4
Đường dẫn menu của các tài liệu liên tục thay đổi. Nó nghĩ rằng điều quan trọng là chỉ đến tài liệu trong câu trả lời: cloud.google.com/vpc/docs/USE-firewalls
Anupam

81

Đây là cách tiếp cận dòng lệnh để trả lời câu hỏi này:

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

Điều này sẽ mở cổng 9090cho các trường hợp mà bạn đặt tên. Bỏ qua --source-tags--source-rangessẽ áp dụng quy tắc cho tất cả các trường hợp. Chi tiết có trong tài liệu hướng dẫn Gcloudcác firewall-rule createnhãn hiệu lệnh

Các câu trả lời trước rất hay, nhưng Google khuyên bạn nên sử dụng các gcloudlệnh mới hơn thay vì các gcutillệnh.

PS: Để có ý tưởng về các quy tắc tường lửa của Google, hãy chạy gcloud compute firewall-rules listvà xem tất cả các quy tắc tường lửa của bạn


Tôi nhận được khiếu nại khi tôi sử dụng --descriptionmột phần, nhưng nếu không thì điều này làm việc cho tôi.
shabbychef

2
Tôi không chắc liệu họ có thay đổi api hay không nhưng nguồn và mục tiêu dường như ngược lại với câu trả lời của @ modulitos. Theo tài liệu lệnh tường lửa quy tắc , sourcecó nghĩa là lưu lượng đến trong khi targetđề cập đến các trường hợp để áp dụng quy tắc.
cindyxiaoxiaoli

1
ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission@modulitos
bắt đầu

Thử nghiệm hậu quả @modulitos là gì? Là nó telnet :instance_ip :porthay nmap -p :port :instance_ip?
Nam G VU

@alper Bạn phải thực hiện lệnh này trước: "đăng nhập gcloud auth" và đăng nhập
Anton Tkachov

10

Bạn sẽ cần thêm quy tắc tường lửa để mở quyền truy cập tcp:9090vào các phiên bản của mình. Nếu bạn có nhiều hơn hai trường hợp và bạn chỉ muốn mở 9090 cho hai trường hợp đó, bạn sẽ muốn đảm bảo rằng có một thẻ mà hai trường hợp đó chia sẻ. Bạn có thể thêm hoặc cập nhật thẻ thông qua bảng điều khiển hoặc dòng lệnh; Tôi khuyên bạn nên sử dụng GUI cho điều đó nếu cần vì nó xử lý chu trình đọc-sửa-ghi với setinstancetags.

Nếu bạn muốn mở cổng 9090 cho tất cả các phiên bản, bạn có thể tạo quy tắc tường lửa như:

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

sẽ áp dụng cho tất cả các trường hợp của bạn.

Nếu bạn chỉ muốn mở cổng 9090 cho hai phiên bản đang phục vụ ứng dụng của mình, hãy đảm bảo rằng chúng có thẻ như thế my-app, sau đó thêm tường lửa như sau:

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

Bạn có thể đọc thêm về việc tạo và quản lý tường lửa trong GCE tại đây .


10
gcutilkhông còn nữa; vui lòng viết lại dòng lệnh của bạn bằng cách sử dụng gcloud.
Misha Brukman

10

Câu hỏi này đã cũ và câu trả lời của Carlos Rojas là tốt, nhưng tôi nghĩ rằng tôi nên đăng một vài điều cần lưu ý trong khi cố gắng mở các cổng.

Điều đầu tiên cần nhớ là phần Mạng được đổi tên thành Mạng VPC . Vì vậy, nếu bạn đang cố gắng tìm ra nơi tùy chọn Tường lửa có sẵn, hãy xem Mạng VPC .

Điều thứ hai là, nếu bạn đang cố mở các cổng trên máy ảo Linux, hãy đảm bảo trong mọi trường hợp bạn không nên thử mở cổng bằng ufwlệnh. Tôi đã thử sử dụng và mất quyền truy cập ssh vào VM. Vì vậy, đừng lặp lại sai lầm của tôi.

Điều thứ ba là, nếu bạn đang cố mở các cổng trên Windows VM, bạn sẽ cần tạo các quy tắc Tường lửa bên trong VM cũng trong Tường lửa Windows cùng với Mạng VPC -> Quy tắc Tường lửa . Cổng cần phải được mở trong cả hai quy tắc tường lửa, không giống như Linux VM. Vì vậy, nếu bạn không nhận được quyền truy cập vào cổng từ bên ngoài VM, hãy kiểm tra xem bạn đã mở cổng trong cả bảng điều khiển GCP và Tường lửa Windows chưa.

Điều cuối cùng (rõ ràng) là, không mở các cổng không cần thiết. Đóng các cổng, ngay khi bạn không còn cần nó nữa.

Tôi hy vọng câu trả lời này là hữu ích.


Các mẹo hay ngoại trừ việc tôi đã mở một số cổng cụ thể bằng ufwlệnh và tôi vẫn có quyền truy cập ssh.
stackErr

7

Tôi đã có cùng một vấn đề như bạn và tôi có thể giải quyết nó bằng cách làm theo hướng dẫn của @CarlosRojas với một chút khác biệt. Thay vì tạo quy tắc tường lửa mới, tôi đã chỉnh sửa quy tắc default-allow-internalđể chấp nhận lưu lượng truy cập từ mọi nơi vì việc tạo quy tắc mới không tạo ra sự khác biệt nào.


Có một khoản phí để tạo ra một quy tắc tường lửa mới. Bạn đã quản lý để tránh điều đó bằng cách chỉnh sửa quy tắc này?
killjoy

@killjoy Tôi không chắc về nó. Tôi hiện không sử dụng công cụ tính toán google. Lấy làm tiếc.
Nevershowmyface

2
Trong khi điều này có thể hoạt động, có những lo ngại về bảo mật với phương pháp này. Những gì tôi tìm thấy để làm việc cho tôi là sử dụng các thẻ tường lửa trên các trường hợp của tôi. Khi bạn tạo quy tắc tường lửa, bạn có thể tạo "Thẻ mục tiêu" cho quy tắc đó. Sau đó, bạn có thể áp dụng thẻ đó cho Trường hợp VM sẽ áp dụng quy tắc cho trường hợp cụ thể của bạn. Xem câu trả lời được chấp nhận tại đây để biết thêm: stackoverflow.com/questions/31509722/iêu
k00k

7

Tạo quy tắc tường lửa

Vui lòng xem lại các thành phần quy tắc tường lửa [1] nếu bạn không quen với các quy tắc tường lửa trong GCP. Các quy tắc tường lửa được xác định ở cấp độ mạng và chỉ áp dụng cho mạng nơi chúng được tạo; tuy nhiên, tên bạn chọn cho mỗi tên phải là duy nhất cho dự án.

Đối với Bảng điều khiển đám mây:

  1. Chuyển đến trang quy tắc Tường lửa trong Bảng điều khiển Google Cloud Platform.
  2. Nhấp vào Tạo quy tắc tường lửa.
  3. Nhập tên cho quy tắc tường lửa. Tên này phải là duy nhất cho dự án.
  4. Chỉ định Mạng nơi quy tắc tường lửa sẽ được thực hiện.
  5. Chỉ định mức độ ưu tiên của quy tắc. Con số càng thấp, mức độ ưu tiên càng cao.
  6. Đối với Hướng lưu lượng, chọn đường vào hoặc đi ra.
  7. Đối với Hành động đối sánh, chọn cho phép hoặc từ chối.
  8. Chỉ định các mục tiêu của quy tắc.

    • Nếu bạn muốn áp dụng quy tắc cho tất cả các phiên bản trong mạng, hãy chọn Tất cả các phiên bản trong mạng.
    • Nếu bạn muốn quy tắc áp dụng cho các trường hợp chọn theo thẻ mạng (đích), hãy chọn Thẻ mục tiêu được chỉ định, sau đó nhập các thẻ mà quy tắc sẽ áp dụng vào trường Thẻ mục tiêu.
    • Nếu bạn muốn áp dụng quy tắc cho các trường hợp được chọn bằng tài khoản dịch vụ được liên kết, hãy chọn Tài khoản dịch vụ được chỉ định, cho biết liệu tài khoản dịch vụ có trong dự án hiện tại hay một tài khoản khác trong phạm vi tài khoản Dịch vụ và chọn hoặc nhập tên tài khoản dịch vụ trong Dịch vụ đích lĩnh vực tài khoản.
  9. Đối với quy tắc xâm nhập, chỉ định bộ lọc Nguồn:

    • Chọn phạm vi IP và nhập các khối CIDR vào trường Phạm vi IP nguồn để xác định nguồn cho lưu lượng đến theo phạm vi địa chỉ IP. Sử dụng 0.0.0.0/0 cho một nguồn từ bất kỳ mạng nào.
    • Chọn mạng con sau đó đánh dấu những cái bạn cần từ nút bật lên Mạng con để xác định nguồn cho lưu lượng truy cập đến theo tên mạng con.
    • Để giới hạn nguồn theo thẻ mạng, chọn Thẻ nguồn, sau đó nhập thẻ mạng vào trường Thẻ nguồn. Để biết giới hạn về số lượng thẻ nguồn, hãy xem Hạn ngạch và Giới hạn VPC. Lọc theo thẻ nguồn chỉ khả dụng nếu mục tiêu không được chỉ định bởi tài khoản dịch vụ. Để biết thêm thông tin, hãy xem lọc theo tài khoản dịch vụ so với thẻ mạng.
    • Để giới hạn nguồn theo tài khoản dịch vụ, chọn Tài khoản dịch vụ, cho biết tài khoản dịch vụ nằm trong dự án hiện tại hay tài khoản khác trong phạm vi tài khoản Dịch vụ và chọn hoặc nhập tên tài khoản dịch vụ trong trường Tài khoản dịch vụ nguồn. Lọc theo tài khoản dịch vụ nguồn chỉ khả dụng nếu mục tiêu không được chỉ định bởi thẻ mạng. Để biết thêm thông tin, hãy xem lọc theo tài khoản dịch vụ so với thẻ mạng.
    • Chỉ định bộ lọc nguồn thứ hai nếu muốn. Bộ lọc nguồn thứ cấp không thể sử dụng cùng tiêu chí bộ lọc như tiêu chí chính.
  10. Đối với quy tắc đi ra, chỉ định bộ lọc Đích:

    • Chọn phạm vi IP và nhập các khối CIDR vào trường Phạm vi IP đích để xác định đích cho lưu lượng đi theo phạm vi địa chỉ IP. Sử dụng 0.0.0.0/0 có nghĩa là ở mọi nơi.
    • Chọn mạng con sau đó đánh dấu những cái bạn cần từ nút bật lên Mạng con để xác định đích cho lưu lượng đi bằng tên mạng con.
  11. Xác định các Giao thức và cổng mà quy tắc sẽ áp dụng:

    • Chọn Cho phép tất cả hoặc Từ chối tất cả, tùy thuộc vào hành động, để áp dụng quy tắc cho tất cả các giao thức và cổng.

    • Xác định các giao thức và cổng cụ thể:

      • Chọn tcp để bao gồm giao thức TCP và cổng. Nhập tất cả hoặc một danh sách các cổng được phân cách bằng dấu phẩy, chẳng hạn như 20-22, 80, 8080.
      • Chọn udp để bao gồm các giao thức và cổng UDP. Nhập tất cả hoặc một danh sách các cổng được phân cách bằng dấu phẩy, chẳng hạn như 67-69, 123.
      • Chọn các giao thức khác để bao gồm các giao thức như icmp hoặc sctp.
  12. (Tùy chọn) Bạn có thể tạo quy tắc tường lửa nhưng không thực thi quy tắc này bằng cách đặt trạng thái thực thi của nó thành bị tắt. Nhấp vào Tắt quy tắc, sau đó chọn Tắt.

  13. (Tùy chọn) Bạn có thể bật ghi nhật ký quy tắc tường lửa:

    • Nhấp vào Nhật ký> Bật.
    • Nhấp vào Bật.
  14. Nhấp vào Tạo.

Liên kết: [1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components


0

Tôi đã phải sửa lỗi này bằng cách giảm mức độ ưu tiên (làm cho nó cao hơn). Điều này gây ra một phản ứng ngay lập tức. Không phải những gì tôi đã mong đợi, nhưng nó đã làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.