ฉันมีอินสแตนซ์ Google Compute Engine 2 ตัวและฉันต้องการเปิดพอร์ต 9090 ทั้งสองกรณี ฉันคิดว่าเราต้องเพิ่มกฎไฟร์วอลล์บางอย่าง
คุณสามารถบอกฉันว่าฉันจะทำอย่างไร
ฉันมีอินสแตนซ์ Google Compute Engine 2 ตัวและฉันต้องการเปิดพอร์ต 9090 ทั้งสองกรณี ฉันคิดว่าเราต้องเพิ่มกฎไฟร์วอลล์บางอย่าง
คุณสามารถบอกฉันว่าฉันจะทำอย่างไร
คำตอบ:
คุณต้อง:
ไปที่ cloud.google.com
ไปที่คอนโซลของฉัน
เลือกโครงการของคุณ
เลือกระบบเครือข่าย> เครือข่าย VPC
เลือก "กฎไฟร์วอลล์"
เลือก "สร้างกฎไฟร์วอลล์"
ในการใช้กฎเพื่อเลือกอินสแตนซ์ VM ให้เลือกเป้าหมาย> "แท็กเป้าหมายที่ระบุ" และป้อนชื่อ "แท็กเป้าหมาย" ในแท็ก แท็กนี้จะใช้เพื่อนำกฎไฟร์วอลล์ใหม่ไปใช้กับอินสแตนซ์ที่คุณต้องการ จากนั้นตรวจสอบให้แน่ใจว่าอินสแตนซ์นั้นใช้แท็กเครือข่าย
หากต้องการอนุญาตการเชื่อมต่อ TCP ขาเข้ากับพอร์ต 9090 ใน "โปรโตคอลและพอร์ต" ให้ป้อน tcp:9090
คลิกสร้าง
ฉันหวังว่านี่จะช่วยคุณได้
อัปเดตโปรดอ้างอิงเอกสารเพื่อกำหนดกฎของคุณเอง
allow http
และallow https
เพิ่งเพิ่มกฎไฟร์วอลล์ใหม่ แต่ดูเหมือนจะหาไม่พบ ฉันยังอยู่ในชั้นฟรีถ้ามันช่วยได้
นี่คือวิธีใช้บรรทัดคำสั่งเพื่อตอบคำถามนี้:
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
ส่วน แต่อย่างอื่นก็ใช้งานได้สำหรับฉัน
source
หมายถึงการจราจรขาเข้าขณะที่target
หมายถึงกรณีที่จะใช้กฎ
ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource: - Insufficient Permission
@modulitos
telnet :instance_ip :port
หรือnmap -p :port :instance_ip
?
คุณจะต้องเพิ่มกฎไฟร์วอลล์เพื่อเปิดการเข้าถึงขาเข้าให้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 นี่
gcutil
ไม่สามารถใช้ได้อีก; โปรดเขียนบรรทัดคำสั่งของคุณgcloud
อีกครั้งโดยใช้
คำถามนี้เก่าและคำตอบของCarlos Rojasนั้นดี แต่ฉันคิดว่าฉันควรโพสต์บางสิ่งที่ควรระลึกไว้ในขณะที่พยายามเปิดพอร์ต
สิ่งแรกที่ต้องจำไว้คือระบบเครือข่ายส่วนที่ถูกเปลี่ยนชื่อเป็นVPC เครือข่าย ดังนั้นถ้าคุณกำลังพยายามที่จะหาที่กฎไฟร์วอลล์ตัวเลือกที่มีให้ไปดูที่VPC เครือข่าย
สิ่งที่สองคือถ้าคุณพยายามเปิดพอร์ตบน Linux VM ตรวจสอบให้แน่ใจว่าไม่ควรเปิดพอร์ตโดยใช้ufw
คำสั่ง ฉันพยายามใช้มันและสูญเสียการเข้าถึง ssh ไปยัง VM ดังนั้นอย่าทำซ้ำความผิดพลาดของฉัน
สิ่งที่สามคือถ้าคุณกำลังพยายามที่จะเปิดพอร์ตใน Windows VM, คุณจะต้องสร้างกฎไฟร์วอลล์ภายใน VM ยังอยู่ในWindows Firewallพร้อมกับVPC เครือข่าย -> กฎไฟร์วอลล์ พอร์ตจะต้องเปิดทั้งสองกฎไฟร์วอลล์ซึ่งแตกต่างจาก Linux VM ดังนั้นหากคุณไม่ได้รับการเข้าถึงพอร์ตจากภายนอก VM ให้ตรวจสอบว่าคุณได้เปิดพอร์ตทั้งในคอนโซล GCP และ Windows Firewall
สิ่งสุดท้าย (ชัดเจน) คืออย่าเปิดพอร์ตโดยไม่จำเป็น ปิดพอร์ตทันทีที่คุณไม่ต้องการใช้อีกต่อไป
ฉันหวังว่าคำตอบนี้มีประโยชน์
ufw
คำสั่งและฉันยังคงสามารถเข้าถึง ssh ได้
ฉันมีปัญหาเช่นเดียวกับที่คุณทำและฉันสามารถแก้ไขได้โดยทำตามคำแนะนำ @CarlosRojas ด้วยความแตกต่างเล็กน้อย แทนที่จะสร้างกฎไฟร์วอลล์ใหม่ฉันแก้ไขกฎdefault-allow-internal
ให้ยอมรับทราฟฟิกจากที่ใดก็ได้เนื่องจากการสร้างกฎใหม่ไม่ได้สร้างความแตกต่างเลย
การสร้างกฎไฟร์วอลล์
โปรดตรวจสอบองค์ประกอบกฎไฟร์วอลล์ [1] หากคุณไม่คุ้นเคยกับกฎไฟร์วอลล์ใน GCP กฎไฟร์วอลล์ถูกกำหนดไว้ที่ระดับเครือข่ายและใช้กับเครือข่ายที่ถูกสร้างขึ้นเท่านั้น อย่างไรก็ตามชื่อที่คุณเลือกสำหรับแต่ละชื่อจะต้องไม่ซ้ำกับโครงการ
สำหรับ Cloud Console:
ระบุเป้าหมายของกฎ
สำหรับกฎทางเข้าระบุตัวกรองแหล่งที่มา:
สำหรับกฎออกไปข้างหน้าให้ระบุตัวกรองปลายทาง:
กำหนดโปรโตคอลและพอร์ตที่จะใช้กฎ:
เลือกอนุญาตทั้งหมดหรือปฏิเสธทั้งหมดขึ้นอยู่กับการกระทำเพื่อให้กฎใช้กับโปรโตคอลและพอร์ตทั้งหมด
กำหนดโปรโตคอลและพอร์ตเฉพาะ:
(ไม่บังคับ) คุณสามารถสร้างกฎไฟร์วอลล์ แต่ไม่บังคับใช้โดยตั้งค่าสถานะการบังคับใช้เป็นปิดใช้งาน คลิกปิดใช้งานกฎแล้วเลือกปิดใช้งาน
(ไม่บังคับ) คุณสามารถเปิดใช้งานการบันทึกกฎไฟร์วอลล์:
คลิกสร้าง
ลิงก์: [1] https://cloud.google.com/vpc/docs/firewalls#firewall_rule_components
ฉันต้องแก้ไขโดยลดระดับความสำคัญ (ทำให้สูงขึ้น) สิ่งนี้ทำให้เกิดการตอบสนองทันที ไม่ใช่สิ่งที่ฉันคาดหวัง แต่มันได้ผล
console.cloud.google.com >> เลือกโครงการ >> เครือข่าย> เครือข่าย VPC >> ไฟร์วอลล์ >> สร้างไฟร์วอลล์
ในการใช้กฎกับอินสแตนซ์ VM ให้เลือกเป้าหมาย "แท็กเป้าหมายที่ระบุ" และป้อนชื่อ "แท็กเป้าหมาย" ในแท็ก แท็กนี้จะใช้เพื่อนำกฎไฟร์วอลล์ใหม่ไปใช้กับอินสแตนซ์ที่คุณต้องการ
ใน "โปรโตคอลและพอร์ต" ป้อน tcp: 9090
คลิกบันทึก