การเปลี่ยนช่วงพอร์ตชั่วคราวของ Linux มีความปลอดภัยเพียงใด


14

ฉันเห็นช่วงพอร์ตชั่วคราวในกล่อง Linux ของฉัน

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

ฉันต้องการขยายช่วงพอร์ตให้เริ่มจากประมาณ 16000 คำถามที่รวดเร็วที่นี่คือ: มันปลอดภัยแค่ไหนที่จะเปลี่ยนช่วงในบริบทให้เป็นแอปพลิเคชันอื่น แอปพลิเคชันอื่น ๆ จะได้รับผลกระทบจากการเปลี่ยนแปลงนี้หรือไม่? ฉันเข้าใจว่าแอปพลิเคชันได้รับผลกระทบเฉพาะเมื่อใช้พอร์ตในช่วงพอร์ตที่ระบุ แต่โดยทั่วไปแล้วปัญหาเหล่านี้จัดการได้อย่างไร?


ฉันไม่คิดว่าจะมีผลกระทบต่อแอปพลิเคชันอื่น ๆ แต่ฉันไม่แน่ใจ คำถามที่น่าสนใจ
ikrabbe

ขวา. แม้ฉันพยายามค้นหาเอกสารอื่นและฉันก็ไม่พบผลกระทบใด ๆ กับแอปพลิเคชันอื่น ลิงก์สองลิงก์ต่อไปนี้เป็นคำอธิบายที่ยอดเยี่ยมเกี่ยวกับสาเหตุที่ทำให้ฉันต้องเผชิญกับปัญหานี้: vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html vincent.bernat.im/en/blog/2014 /ephemeral_ports.html
Ashwin Tumma

@ikrabbe แน่นอนว่ามันจะมีผลกับแอปพลิเคชั่นอื่น ๆ เช่นถ้าเบราว์เซอร์ของคุณเปิดพอร์ตชั่วคราวเพื่อติดต่อเว็บไซต์จากนั้นมีคน / สิ่งพยายามเริ่มแอปพลิเคชันซึ่งบังเอิญใช้พอร์ตนั้น แอปพลิเคชันจะล้มเหลว
goldilocks

3
เพียงเพื่อความสมบูรณ์ไวยากรณ์สำหรับการแก้ไขช่วงหมายเลขพอร์ตมีดังนี้: $ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin Tumma

คำตอบ:


10

การเปลี่ยนช่วงพอร์ตชั่วคราวอาจทำให้เกิดปัญหาหากคุณใช้งาน Mesos

Mesos โฆษณาทรัพยากรของโฮสต์ออกไปยังMesos Frameworksต่าง ๆซึ่งสามารถเลือกใช้ทรัพยากรที่โฆษณาได้ ทรัพยากรที่โฆษณารวมถึงหน่วยความจำพอร์ต ฯลฯ ชุดเริ่มต้นของพอร์ตที่ Mesos ประกาศเป็น31,000-32,000 นี้หลีกเลี่ยงการปะทะกันกับลินุกซ์เริ่มต้นชั่วคราวช่วงพอร์ตของ32,768-61,000

ยวด Mesos ไม่ทราบเกี่ยวกับว่ามีการใช้พอร์ตโดยกระบวนการอื่น ๆ หรือไม่เพียงติดตามการกำหนดพอร์ตให้กับเอนทิตีที่มันดำเนินการ ( Mesos Tasks & Mesos Executors ) ดังนั้นหากคุณเปลี่ยนช่วงพอร์ตชั่วคราวซึ่งจะทับซ้อนกับช่วงพอร์ต Mesos อาจเป็นไปได้ว่าบางกระบวนการโดยพลการจะใช้พอร์ตชั่วคราวซึ่งเป็นหนึ่งใน "พอร์ต Mesos" จริง ๆ สิ่งนี้อาจนำไปสู่ ​​Mesos ที่เสนอพอร์ตนั้นไปยังMesos Frameworkซึ่งจะพบความล้มเหลวแบบสุ่มของMesos Executorsและ / หรือ Mesos Tasksเนื่องจากพวกเขาจะไม่สามารถผูกกับพอร์ตนั้นได้

หากคุณจำเป็นต้องเพิ่มช่วงพอร์ตของคุณชั่วคราวและยังต้องทำงาน Mesos แล้วคุณสามารถปรับเปลี่ยนพอร์ตการโฆษณาผ่านmesos-slave(เร็ว ๆ นี้จะเปลี่ยนชื่อmesos-agent) --resourcesการกำหนดค่าพารามิเตอร์ของ


4

คุณสามารถรับรายการบริการที่อาจได้รับผลกระทบโดยดูว่ามีอะไรอยู่ในช่วงนั้นใน/etc/servicesไฟล์ในเครื่องของคุณเช่น:

awk '/^#/ { next } $2+0 >= 16000 && $2+0 < 32768 { print }' /etc/services

หรือในสถานที่ที่มีสิทธิ์:

wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv
awk -F, '$2+0 >= 16000 && $2+0 < 32768 { print }' service-names-port-numbers.csv

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