สวิตช์ตัดการเชื่อมต่อ VPN: บล็อกทราฟฟิกอะไรและเมื่อใด
การเชื่อมต่อใหม่ทำให้อุโมงค์กลับมา ส่วนสวิตช์ตัดสินว่าเกิดอะไรขึ้นเมื่ออุโมงค์หายไป ทดสอบการหลุด การตัดด้วยมือ การออกจากแอป และการเปลี่ยนเครือข่ายแยกกัน
สองฟีเจอร์ถูกเรียกด้วยคำเดียวกันแต่ทำงานต่างกัน การเชื่อมต่อใหม่แบบอัตโนมัติพยายามดึงอุโมงค์กลับมา และอาจสำเร็จภายในหนึ่งวินาทีในขณะที่คำขอในช่องว่างนั้นล้มเหลว สวิตช์ตัดสินว่าเกิดอะไรขึ้นกับทราฟฟิกในช่วงนั้น การอ่านไคลเอนต์ราวกับทั้งสองเป็นค่าเดียวกันคือหนทางที่ผู้คนลงเอยด้วยการเชื่อใจไอคอนแทนนโยบาย
การบล็อกและการเชื่อมต่อใหม่เป็นการตัดสินใจคนละเรื่อง
ไคลเอนต์หนึ่งบล็อกเฉพาะเมื่อการหลุดไม่ได้คาดหมาย แล้วจึงเชื่อมต่อใหม่และปลดบล็อก อีกตัวคงบล็อกในระดับระบบจนกว่าจะมีคนเปลี่ยนค่าเอง และตัวที่สามถือว่าการตัดโดยเจตนาเป็นการอนุญาตให้คืนการเข้าถึงปกติ นี่คือสามพฤติกรรมที่ต่างกัน และเอกสารของผู้ให้บริการระบุว่าเวอร์ชันของคุณทำแบบไหน
การนำเข้าโปรไฟล์ไม่ได้ตัดสินคำถามนี้ โปรไฟล์เซิร์ฟเวอร์เดียวกันโหลดเข้าไคลเอนต์สองตัวที่มีพฤติกรรมบล็อกตรงข้ามกัน เพราะโปรไฟล์บรรทุกค่า ไม่ใช่คำสัญญา นี่จึงเป็นเหตุผลที่ช่องทำเครื่องหมายบนเดสก์ท็อปและสวิตช์บนมือถือที่มีป้ายคล้ายกันอาจใช้กฎต่างกัน อ่านคำอธิบายข้างตัวควบคุมบนแพลตฟอร์มของคุณ แล้วทดสอบว่ามันทำอะไร
โปรไฟล์เดียวกันทำงานต่างกันในสองไคลเอนต์
การตั้งค่าแอป OpenVPN Connect อธิบายโหมดอุโมงค์ที่กักทราฟฟิกปกติไว้เพียงในขณะที่ไคลเอนต์รายงานสถานะหยุดชั่วคราวหรือกำลังเชื่อมต่อใหม่ ซึ่งแคบกว่าคำสัญญาทั่วไปเกี่ยวกับทุกเหตุการณ์บนทุกแพลตฟอร์ม อ่านสถานะที่ระบุไว้ ไม่ใช่ชื่อผลิตภัณฑ์ คำอธิบายที่เขียนสำหรับไคลเอนต์รุ่นหนึ่งไม่ส่งต่อไปยังไคลเอนต์ของผู้ให้บริการรายอื่น
Android แสดงคำเดียวกันกับตัวควบคุมสองตัว เพราะ VPN ที่เปิดตลอดเวลาและการบล็อกการเชื่อมต่อเมื่อไม่มี VPN มีเอกสารแยกกัน ไคลเอนต์เดสก์ท็อปที่มีช่องทำเครื่องหมายชื่อคล้ายกันอาจใช้สิ่งที่แคบหรือกว้างกว่าทั้งสองแบบ ถือว่าป้ายที่ใช้ร่วมกันในสองเมนูเป็นเรื่องบังเอิญจนกว่าจะอ่านคำอธิบายทั้งสอง อุปกรณ์ที่ถูกจัดการเพิ่มชั้นที่สาม เพราะโปรไฟล์อุปกรณ์สามารถบังคับค่าที่ผู้ใช้มองไม่เห็นหรือยกเลิกไม่ได้
การตั้งค่าแพลตฟอร์มที่ดูคล้ายกันไม่เท่ากัน
เปรียบเทียบตัวควบคุมที่คุณเห็นกับนโยบายที่ใช้จริง บนอุปกรณ์ที่ถูกจัดการ สวิตช์ที่มองเห็นอาจเป็นสีเทา หรืออาจเปิดอยู่ขณะที่โปรไฟล์ระดับสูงกว่าบังคับให้ตรงกันข้าม ขอนโยบายที่มีผลจริงไม่ใช่ระดับท้องถิ่น และขอคำตอบเป็นลายลักษณ์อักษร
บันทึกว่าแต่ละชั้นอ้างอะไรก่อนจะทดสอบอะไร เพราะทั้งสองมักไม่ตรงกันและความไม่ตรงกันนั้นหายง่ายเมื่อการทดสอบเริ่ม อุปกรณ์ที่บล็อกถูกต้องระหว่างการทดสอบอาจบล็อกด้วยเหตุผลที่ไม่มีใครบันทึกไว้
รันหนึ่งเหตุการณ์ต่อครั้งและบันทึกรหัส
ทดสอบหนึ่งเหตุการณ์ต่อการรัน ด้วยคำขอที่ไม่เป็นอันตราย และทำให้ทุกความพยายามเป็นคำขอใหม่ ไม่ใช่หน้าที่อาจอยู่ในแคชแล้ว คำสั่งด้านล่างลดอุโมงค์ลง ขอหน้าเว็บ และแสดงว่าอินเทอร์เฟซกลับมาหรือไม่
ip link set tun0 down
curl -s -o /dev/null -w "%{http_code}\n" --max-time 5 https://example.com
ip -brief address show tun0
ตารางเชื่อมโยงแต่ละการกระทำกับการสังเกตที่สำคัญและหลักฐานที่ควรเก็บ คำขอที่ล้มเหลวภายในเวลาที่กำหนดบอกว่าการบล็อกทำงาน ส่วนคำขอที่ผ่านบอกว่าทราฟฟิกพบเส้นทางอื่น ซึ่งอาจเป็นเส้นทางที่ยกเว้นไว้ ไม่ใช่การบล็อกที่ปิดอยู่ ทำชุดทดสอบทั้งหมดซ้ำหลังการอัปเดตซอฟต์แวร์ที่มีนัยสำคัญหรือการเปลี่ยนนโยบายเส้นทาง เพราะทั้งสองอย่างอาจเปลี่ยนสาขาโดยไม่มีการตั้งค่าที่มองเห็นขยับเลย สิ่งที่คุณต้องการในตอนท้ายคือพฤติกรรมล้มเหลวที่คาดเดาได้ ไม่ใช่ไอคอนที่ทำให้สบายใจ
| What I do | What I watch | Evidence to keep |
|---|---|---|
| Bring the tunnel down by hand | Whether a fresh request fails at once | The HTTP code and the client state at that second |
| Choose Disconnect in the client | Whether ordinary access returns on purpose | The same request succeeding with no tunnel up |
| Quit the app, then reboot | Whether the block outlives the client | A request made from a clean boot |
| Move from Wi-Fi to cellular | Whether DNS and IPv6 follow the policy | The resolver answer, the route table and the code again |
ข้อยกเว้น พอร์ทัลแขก และสิ่งที่การบล็อกทำไม่ได้
การเข้าถึงเครือข่ายท้องถิ่นเป็นข้อยกเว้นที่พบบ่อย และมันเปลี่ยนขอบเขตของคำสัญญา ไคลเอนต์อาจเข้าถึงเครื่องพิมพ์ในซับเน็ตเดียวกันขณะบล็อกอย่างอื่นทั้งหมด ซึ่งสมเหตุสมผลที่บ้านและน่าสงสัยบนเครือข่ายแขก ตัดสินใจว่าต้องการข้อยกเว้นนี้หรือไม่ก่อนเหตุการณ์จะค้นพบมันแทนคุณ
การบล็อกที่เข้มงวดยังทำให้การลงชื่อเข้าใช้พอร์ทัลของเครือข่ายแขกยุ่งยาก เพราะพอร์ทัลคือทราฟฟิกตรงที่การบล็อกมีอยู่เพื่อหยุดมัน เรียนวิธีที่รองรับในการอนุญาตเครือข่าย แล้วคืนนโยบายอย่างตั้งใจแทนที่จะปิดตัวควบคุมจนกว่าหน้าจะโหลด เก็บคำตอบของตัวแปลงชื่อและตารางเส้นทางไว้ในบันทึกเดียวกัน ดังด้านล่าง สิ่งที่สวิตช์ทำไม่ได้คือทำให้บริการเป็นนิรนาม เพราะการบล็อกทราฟฟิกนอกอุโมงค์ไม่ได้บอกอะไรเกี่ยวกับสิ่งที่เกิดขึ้นข้างใน
resolvectl query example.com
ss -tunp | grep -v tun0