วิธีเปิดพอร์ตเฉพาะเช่น 9090 ใน Google Compute Engine


195

ฉันมีอินสแตนซ์ Google Compute Engine 2 ตัวและฉันต้องการเปิดพอร์ต 9090 ทั้งสองกรณี ฉันคิดว่าเราต้องเพิ่มกฎไฟร์วอลล์บางอย่าง

คุณสามารถบอกฉันว่าฉันจะทำอย่างไร


7
ฉันคิดว่าคำถามนี้ได้รับการตอบ คุณต้องการเลือกคำตอบด้านล่างนี้หรือไม่? มันจะช่วยให้ผู้อ่านในอนาคตจดจำได้ง่ายขึ้นว่าปัญหานี้ได้รับการแก้ไขแล้ว
modulitos

Yo, Subhradip เลือกคำตอบ
oligofren

คำตอบ:


339

คุณต้อง:

  1. ไปที่ cloud.google.com

  2. ไปที่คอนโซลของฉัน

  3. เลือกโครงการของคุณ

  4. เลือกระบบเครือข่าย> เครือข่าย VPC

  5. เลือก "กฎไฟร์วอลล์"

  6. เลือก "สร้างกฎไฟร์วอลล์"

  7. ในการใช้กฎเพื่อเลือกอินสแตนซ์ VM ให้เลือกเป้าหมาย> "แท็กเป้าหมายที่ระบุ" และป้อนชื่อ "แท็กเป้าหมาย" ในแท็ก แท็กนี้จะใช้เพื่อนำกฎไฟร์วอลล์ใหม่ไปใช้กับอินสแตนซ์ที่คุณต้องการ จากนั้นตรวจสอบให้แน่ใจว่าอินสแตนซ์นั้นใช้แท็กเครือข่าย

  8. หากต้องการอนุญาตการเชื่อมต่อ TCP ขาเข้ากับพอร์ต 9090 ใน "โปรโตคอลและพอร์ต" ให้ป้อน tcp:9090

  9. คลิกสร้าง

ฉันหวังว่านี่จะช่วยคุณได้

อัปเดตโปรดอ้างอิงเอกสารเพื่อกำหนดกฎของคุณเอง


4
เครื่องมือคำนวณไม่มี "เครือข่าย" (ซึ่งอีกต่อไป?)
แอฟริกา

8
ใช่ไม่มีตัวเลือกเครือข่ายเส้นทางที่อัพเดทคือโครงการ -> ระบบเครือข่าย -> กฎไฟร์วอลล์
Caio Vertematti

1
ในอินสแตนซ์ของฉันฉันมีallow httpและallow httpsเพิ่งเพิ่มกฎไฟร์วอลล์ใหม่ แต่ดูเหมือนจะหาไม่พบ ฉันยังอยู่ในชั้นฟรีถ้ามันช่วยได้
A. L

1
คุณต้องอนุญาตให้ http เพื่อเปิด 80 พอร์ตและอนุญาตให้ https เพื่อเปิด 443 มันเป็นทางลัด
Carlos Rojas

4
เส้นทางเมนูของเอกสารจะเปลี่ยนแปลงตลอดเวลา มันคิดว่ามันสำคัญที่จะต้องชี้ไปที่เอกสารในคำตอบ: cloud.google.com/vpc/docs/using-firewalls
Anupam

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?
Nam G VU

@alper คุณต้องทำคำสั่งนี้ก่อน: "เข้าสู่ระบบ gcloud auth" และเข้าสู่ระบบ
Anton Tkachov

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อีกครั้งโดยใช้
Misha Brukman

10

คำถามนี้เก่าและคำตอบของCarlos Rojasนั้นดี แต่ฉันคิดว่าฉันควรโพสต์บางสิ่งที่ควรระลึกไว้ในขณะที่พยายามเปิดพอร์ต

สิ่งแรกที่ต้องจำไว้คือระบบเครือข่ายส่วนที่ถูกเปลี่ยนชื่อเป็นVPC เครือข่าย ดังนั้นถ้าคุณกำลังพยายามที่จะหาที่กฎไฟร์วอลล์ตัวเลือกที่มีให้ไปดูที่VPC เครือข่าย

สิ่งที่สองคือถ้าคุณพยายามเปิดพอร์ตบน Linux VM ตรวจสอบให้แน่ใจว่าไม่ควรเปิดพอร์ตโดยใช้ufwคำสั่ง ฉันพยายามใช้มันและสูญเสียการเข้าถึง ssh ไปยัง VM ดังนั้นอย่าทำซ้ำความผิดพลาดของฉัน

สิ่งที่สามคือถ้าคุณกำลังพยายามที่จะเปิดพอร์ตใน Windows VM, คุณจะต้องสร้างกฎไฟร์วอลล์ภายใน VM ยังอยู่ในWindows Firewallพร้อมกับVPC เครือข่าย -> กฎไฟร์วอลล์ พอร์ตจะต้องเปิดทั้งสองกฎไฟร์วอลล์ซึ่งแตกต่างจาก Linux VM ดังนั้นหากคุณไม่ได้รับการเข้าถึงพอร์ตจากภายนอก VM ให้ตรวจสอบว่าคุณได้เปิดพอร์ตทั้งในคอนโซล GCP และ Windows Firewall

สิ่งสุดท้าย (ชัดเจน) คืออย่าเปิดพอร์ตโดยไม่จำเป็น ปิดพอร์ตทันทีที่คุณไม่ต้องการใช้อีกต่อไป

ฉันหวังว่าคำตอบนี้มีประโยชน์


คำแนะนำที่ดียกเว้นว่าฉันได้เปิดพอร์ตบางตัวด้วยufwคำสั่งและฉันยังคงสามารถเข้าถึง ssh ได้
stackErr

7

ฉันมีปัญหาเช่นเดียวกับที่คุณทำและฉันสามารถแก้ไขได้โดยทำตามคำแนะนำ @CarlosRojas ด้วยความแตกต่างเล็กน้อย แทนที่จะสร้างกฎไฟร์วอลล์ใหม่ฉันแก้ไขกฎdefault-allow-internalให้ยอมรับทราฟฟิกจากที่ใดก็ได้เนื่องจากการสร้างกฎใหม่ไม่ได้สร้างความแตกต่างเลย


มีค่าใช้จ่ายในการสร้างกฎไฟร์วอลล์ใหม่ คุณจัดการเพื่อหลีกเลี่ยงปัญหานั้นด้วยการแก้ไขกฎนี้หรือไม่?
killjoy

@ killjoy ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้ ขณะนี้ฉันไม่ได้ใช้โปรแกรมคำนวณของ Google ขอโทษ
Nevershowmyface

2
ขณะนี้อาจใช้งานได้มีความกังวลด้านความปลอดภัยด้วยวิธีนี้ สิ่งที่ฉันพบว่าใช้งานได้สำหรับฉันคือการใช้แท็กไฟร์วอลล์ในอินสแตนซ์ของฉัน เมื่อคุณสร้างกฎไฟร์วอลล์คุณสามารถสร้าง "แท็กเป้าหมาย" สำหรับกฎนั้น จากนั้นคุณสามารถใช้แท็กนั้นกับ VM Instance ของคุณซึ่งจะใช้กฎกับอินสแตนซ์เฉพาะของคุณ ดูคำตอบที่ยอมรับได้ที่นี่สำหรับเพิ่มเติม: stackoverflow.com/questions/31509722/…
k00k

7

การสร้างกฎไฟร์วอลล์

โปรดตรวจสอบองค์ประกอบกฎไฟร์วอลล์ [1] หากคุณไม่คุ้นเคยกับกฎไฟร์วอลล์ใน GCP กฎไฟร์วอลล์ถูกกำหนดไว้ที่ระดับเครือข่ายและใช้กับเครือข่ายที่ถูกสร้างขึ้นเท่านั้น อย่างไรก็ตามชื่อที่คุณเลือกสำหรับแต่ละชื่อจะต้องไม่ซ้ำกับโครงการ

สำหรับ Cloud Console:

  1. ไปที่หน้ากฎไฟร์วอลล์ในคอนโซลแพลตฟอร์มของ Google Cloud
  2. คลิกสร้างกฎไฟร์วอลล์
  3. ป้อนชื่อสำหรับกฎไฟร์วอลล์ ชื่อนี้จะต้องไม่ซ้ำกันสำหรับโครงการ
  4. ระบุเครือข่ายที่จะใช้กฎไฟร์วอลล์
  5. ระบุลำดับความสำคัญของกฎ จำนวนที่ต่ำกว่าลำดับความสำคัญที่สูงขึ้น
  6. สำหรับทิศทางของการจราจรให้เลือกทางเข้าหรือทางออก
  7. สำหรับการกระทำที่ตรงกันให้เลือกอนุญาตหรือปฏิเสธ
  8. ระบุเป้าหมายของกฎ

    • หากคุณต้องการให้กฎนำไปใช้กับอินสแตนซ์ทั้งหมดในเครือข่ายให้เลือกอินสแตนซ์ทั้งหมดในเครือข่าย
    • หากคุณต้องการให้กฎนำไปใช้เพื่อเลือกอินสแตนซ์ตามแท็กเครือข่าย (เป้าหมาย) เลือกแท็กเป้าหมายที่ระบุจากนั้นพิมพ์แท็กที่ควรใช้กฎในฟิลด์แท็กเป้าหมาย
    • หากคุณต้องการให้กฎนำไปใช้เพื่อเลือกอินสแตนซ์โดยบัญชีบริการที่เกี่ยวข้องเลือกบัญชีบริการที่ระบุระบุว่าบัญชีบริการอยู่ในโครงการปัจจุบันหรืออีกบัญชีหนึ่งภายใต้ขอบเขตบัญชีบริการและเลือกหรือพิมพ์ชื่อบัญชีบริการในบริการเป้าหมาย เขตข้อมูลบัญชี
  9. สำหรับกฎทางเข้าระบุตัวกรองแหล่งที่มา:

    • เลือกช่วง IP และพิมพ์บล็อก CIDR ในฟิลด์ช่วง IP ต้นทางเพื่อกำหนดแหล่งที่มาสำหรับการรับส่งข้อมูลขาเข้าตามช่วงที่อยู่ IP ใช้ 0.0.0.0/0 สำหรับแหล่งที่มาจากเครือข่ายใด ๆ
    • เลือก Subnets จากนั้นทำเครื่องหมายสิ่งที่คุณต้องการจากปุ่มป๊อปอัป Subnets เพื่อกำหนดแหล่งที่มาสำหรับทราฟฟิกขาเข้าตามชื่อเครือข่ายย่อย
    • หากต้องการ จำกัด แหล่งที่มาตามแท็กเครือข่ายให้เลือกแท็กแหล่งที่มาจากนั้นพิมพ์แท็กเครือข่ายลงในฟิลด์แท็กแหล่งที่มา สำหรับข้อ จำกัด เกี่ยวกับจำนวนของแท็กแหล่งที่มาให้ดูโควต้า VPC และขีด จำกัด การกรองตามแท็กแหล่งข้อมูลจะใช้ได้เฉพาะในกรณีที่เป้าหมายไม่ได้ระบุไว้ในบัญชีบริการ สำหรับข้อมูลเพิ่มเติมดูการกรองตามบัญชีบริการกับแท็กเครือข่าย
    • หากต้องการ จำกัด แหล่งที่มาตามบัญชีบริการให้เลือกบัญชีบริการระบุว่าบัญชีบริการอยู่ในโครงการปัจจุบันหรืออีกบัญชีหนึ่งภายใต้ขอบเขตบัญชีบริการและเลือกหรือพิมพ์ชื่อบัญชีบริการในฟิลด์บัญชีบริการแหล่งข้อมูล การกรองตามบัญชีบริการต้นทางจะใช้ได้เฉพาะในกรณีที่เป้าหมายไม่ได้ระบุไว้โดยแท็กเครือข่าย สำหรับข้อมูลเพิ่มเติมดูการกรองตามบัญชีบริการเทียบกับแท็กเครือข่าย
    • ระบุแหล่งตัวกรองที่สองหากต้องการ ตัวกรองแหล่งที่มารองไม่สามารถใช้เกณฑ์ตัวกรองเดียวกันกับตัวกรองหลัก
  10. สำหรับกฎออกไปข้างหน้าให้ระบุตัวกรองปลายทาง:

    • เลือกช่วง IP และพิมพ์บล็อก CIDR ในฟิลด์ช่วง IP ปลายทางเพื่อกำหนดปลายทางสำหรับทราฟฟิกขาออกตามช่วงที่อยู่ IP ใช้ 0.0.0.0/0 เพื่อหมายถึงทุกที่
    • เลือก Subnets จากนั้นทำเครื่องหมายสิ่งที่คุณต้องการจากปุ่มป๊อปอัป Subnets เพื่อกำหนดปลายทางสำหรับทราฟฟิกขาออกตามชื่อเครือข่าย
  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

คลิกบันทึก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.