ifconfig-noexec ไม่ได้ช่วยเซสชัน SSH ของคุณ: มันทำอะไรจริง ๆ
มันระงับการตั้งค่าที่อยู่ของอินเทอร์เฟซที่ OpenVPN ทำเอง มันไม่ได้จองเส้นทางตอบกลับสำหรับ SSH ไม่ได้ปิดการเปลี่ยนเส้นทางทั้งหมด และไม่ได้ให้ที่อยู่ที่ขาดหายไป
ในกระทู้ฟอรัมแห่งหนึ่ง ifconfig-noexec ถูกเสนอเป็นวิธีแก้ที่ทำให้เซสชัน SSH ยังมีชีวิตเมื่ออุโมงค์เชื่อมต่อขึ้นมา เหตุผลนั้นฟังดูสมเหตุสมผลจนกว่าคุณจะตรวจดูว่าตัวเลือกนี้แตะต้องอะไรจริง ๆ มันหยุด OpenVPN จากการกำหนดที่อยู่ของอินเทอร์เฟซอุโมงค์ และส่งค่าเหล่านั้นให้สคริปต์แทน มันไม่ได้พูดอะไรเกี่ยวกับคำตอบของการเชื่อมต่อสำหรับจัดการของคุณว่าจะไปที่ไหน การเชื่อว่าตรงกันข้ามจะได้อุโมงค์ที่ไม่มีที่อยู่ใช้งานได้และเซสชัน SSH ที่ยังคงตาย
ตัวเลือกนี้มอบหมายอะไรจริง ๆ
โดยค่าเริ่มต้น ไคลเอนต์จะยกอุปกรณ์อุโมงค์ขึ้นและกำหนดที่อยู่ภายในและระยะไกลที่เซิร์ฟเวอร์ให้มา เมื่อ ifconfig-noexec ถูกตั้งค่า ขั้นตอนนั้นจะถูกข้าม และค่าที่เจรจาได้จะถูกส่งออกไปยังสภาพแวดล้อมของสคริปต์เพื่อให้สิ่งอื่นนำไปใช้ได้
ความเป็นเจ้าของย้ายไป ไม่มีอะไรถูกสร้างขึ้นมาแทนที่
ดังนั้นคำถามที่ตัวเลือกนี้ตอบคือใครกำหนดอินเทอร์เฟซ และ คำถามที่มันไม่ตอบคือแพ็กเก็ตหาทางกลับมาหาคุณได้อย่างไร แยกสองเรื่องนี้ออกจากกัน ไม่อย่างนั้นคุณจะเสียเวลาทั้งเย็นแก้เส้นทางเพื่อชดเชยอินเทอร์เฟซที่ไม่มีที่อยู่
สามตัวเลือกที่คล้ายกันแต่ทำงานต่างกัน
ครอบครัวนี้สับสนได้ง่ายเพราะชื่อต่างกันแค่คำเดียวและอาการก็ทับซ้อนกัน อ่านว่าตัวเลือกแต่ละตัวระงับอะไรก่อนจะเลือกตัวใดตัวหนึ่ง
| Option | What stops happening |
|---|---|
ifconfig-noexec | OpenVPN's own tunnel-address configuration; values go to scripts instead |
route-noexec | Automatic route addition and removal; route details go to a script |
route-nopull | Server-pushed routes and related options such as DNS are rejected |
สิ่งเหล่านี้เป็นทางเลือกที่ต้องเข้าใจแยกกัน ไม่ใช่ชุดที่เอามาแปะรวมกัน การระงับการตั้งค่าที่อยู่ไม่ได้ระงับการเปลี่ยนเส้นทาง กฎไฟร์วอลล์ หรือตัวเลือกที่ถูกดันมาซึ่งพา DNS สคริปต์ที่รับมอบหมายก็มีอิสระที่จะเปลี่ยนเส้นทาง ซึ่งเป็นการตัดสินใจที่คุณมอบหมายออกไปแทนที่จะหลีกเลี่ยง
ถ้าไคลเอนต์ของผู้ขายห่อหุ้มเอนจิน ให้ใช้การผสานรวมที่รองรับแทนการโยนคำสั่งระดับต่ำลงในโปรไฟล์แล้วหวังว่าตัวห่อจะเคารพมัน ตัวห่อมักสร้างโปรไฟล์ใหม่เมื่อเชื่อมต่อ ดังนั้นการแก้ไขด้วยมือจึงหายไปโดยไม่มีข้อผิดพลาด ตรวจดูว่าไคลเอนต์เก็บการตั้งค่าไว้ที่ไหนก่อนจะใช้เวลาทั้งเย็นกับไฟล์นั้น ใช้ได้กับทุกแถวในตาราง ไม่ใช่แค่แถวที่คุณมาหา
เซสชัน SSH ที่คุณตั้งใจจะปกป้อง
การเชื่อมต่อ SSH มีที่อยู่ต้นทาง ที่อยู่ปลายทาง และเส้นทางตอบกลับ บนเซิร์ฟเวอร์ที่เพิ่งติดตั้งค่าเริ่มต้นแบบอุโมงค์เต็ม คำตอบไปยังที่อยู่สาธารณะของคุณตรงกับอุโมงค์ และเกตเวย์ VPN ทิ้งมัน
ไม่มีอะไรในการตั้งค่าที่อยู่ของอินเทอร์เฟซอุโมงค์เปลี่ยนสิ่งนั้น
สิ่งที่แก้คือเส้นทางที่เจาะจงกว่าสำหรับที่อยู่จัดการของคุณผ่านเกตเวย์ก่อนอุโมงค์ หรือกฎนโยบายที่บังคับทิศทางทราฟฟิกนั้น บวกกับการตั้งค่าตัวกรองที่โฮสต์ของคุณใช้ ปัญหาทั้งสองบางครั้งปรากฏพร้อมกัน ซึ่งเป็นเหตุให้อันหนึ่งถูกเข้าใจผิดว่าเป็นยารักษาอีกอัน ทดสอบแยกกัน: ยกอุโมงค์ขึ้นโดยไม่ใช้ตัวเลือก ดูที่อยู่ของอินเทอร์เฟซและเส้นทางตอบกลับ แล้วตัดสินว่าตัวไหนในสองตัวที่เสียจริง
สคริปต์ที่รับมอบหมายต้องรับอะไรไป
ถ้าคุณต้องการให้เจ้าของอื่นกำหนดอินเทอร์เฟซจริง ๆ ให้แจกแจงงาน: ใช้ที่อยู่ภายในและระยะไกล ยกอุปกรณ์ขึ้น กู้คืนหรือลบการกำหนดที่อยู่ตอนถอด และทำแบบเดิมอีกครั้งหลังเชื่อมต่อใหม่ ค่าจากเซสชันที่สำเร็จครั้งเดียวไม่ควรถูกฮาร์ดโค้ด เพราะเซิร์ฟเวอร์อาจให้คู่อื่นในครั้งหน้า
ตัวแปรสภาพแวดล้อมที่ไคลเอนต์ส่งออกเป็นอินพุตเดียวที่รองรับสำหรับงานนั้น
env | grep -E '^ifconfig_|^route_'ภายในสคริปต์ route-up ตัวแปรเหล่านั้นใช้ได้ แต่จากงาน cron หรือเชลล์ที่รันด้วยมือใช้ไม่ได้ ยืนยันว่าเวอร์ชันของคุณใช้ฮุกวงจรชีวิตตัวไหน และยืนยันว่าฮุกรันด้วยสิทธิ์พอที่จะเปลี่ยนอินเทอร์เฟซ เพราะไคลเอนต์อาจลดลงไปยังผู้ใช้ที่ไม่มีสิทธิ์แล้ว
ทดสอบวงจรชีวิตทั้งหมด ไม่ใช่เซสชันเดียว
ยกอุโมงค์ขึ้น ตรวจที่อยู่บนอุปกรณ์ แล้วเชื่อมต่อใหม่และตรวจอีกครั้ง การกำหนดค่าที่ทำงานได้ครั้งเดียวและล้มเหลวในครั้งที่สองมักหมายความว่าขั้นตอนที่มอบหมายรันเฉพาะการเชื่อมต่อครั้งแรก
จากนั้นทดสอบเกณฑ์การยอมรับทั้งสองพร้อมกัน: การเชื่อมต่อ SSH ใหม่ผ่านเส้นทางจัดการที่ตั้งใจใช้ได้ และแอปพลิเคชันที่ได้รับอนุญาตใช้อุโมงค์อย่างถูกต้อง
เซสชัน SSH เก่าที่บังเอิญรอดอยู่ขณะอุโมงค์ไม่มีที่อยู่ไม่ใช่ความสำเร็จ และเป็นสภาพที่ตัวเลือกนี้สร้างขึ้นเมื่อไม่มีใครรับงานไปทำ ตรวจที่อยู่ของอินเทอร์เฟซก่อน จากนั้นเส้นทางตอบกลับของการจัดการ แล้วจึงแอปพลิเคชัน ถ้าสองในสามผิด ตัวเลือกนี้ย้ายงานโดยไม่ได้ให้เจ้าของ