ผมย้ายกล่อง VPN ในบ้านจาก Wi-Fi ไปเป็น Ethernet แล้วที่อยู่ “ถาวร” ของมันก็เปลี่ยนในเย็นวันนั้นเอง ไม่มีอะไรเสียบนเราเตอร์ การจองนั้นจับคู่กับอะแดปเตอร์ไร้สาย และอะแดปเตอร์นั้นไม่ได้อยู่ในเส้นทางอีกต่อไป

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

การจองจับคู่กับไคลเอนต์ ไม่ใช่อุปกรณ์

ใน DHCPv4 การจองผูกกับที่อยู่ฮาร์ดแวร์ของไคลเอนต์ ใน DHCPv6 ผูกกับ DUID ที่คาดว่าไคลเอนต์จะเก็บไว้ ฟิลด์ hostname เป็นเพียงป้ายสำหรับมนุษย์ สิ่งที่เราเตอร์เปรียบเทียบจริง ๆ คือตัวระบุที่มาในคำขอ

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

OpenWrt แสดงรูปแบบให้เห็นชัดเจน บล็อก config host หนึ่งบล็อกใน /etc/config/dhcp ผูกชื่อ ที่อยู่ MAC และที่อยู่เข้าด้วยกัน และ เอกสารเกี่ยวกับสัญญาแบบคงที่ อธิบายว่ารายการนั้นทำงานร่วมกับพูลอย่างไร เราเตอร์อื่นซ่อนสามฟิลด์เดียวกันไว้หลังป้ายชื่ออื่น

จุดที่การจับคู่หลุดไปอย่างเงียบ ๆ

การเปลี่ยนฮาร์ดแวร์เป็นกรณีปกติ เปลี่ยนการ์ดเครือข่าย หรือย้ายเครื่องระหว่าง Ethernet กับ Wi-Fi แล้วที่อยู่ที่เราเตอร์เห็นก็เปลี่ยนตาม การจองเดิมยังอยู่ในรายการและยังดูถูกต้อง

การติดตั้งใหม่เป็นกรณีที่สอง และกัดแรงที่สุดกับ IPv6 การติดตั้งใหม่สามารถสร้าง DUID ใหม่ในขณะที่สัญญา IPv4 เดิมยังใช้ได้ ที่อยู่ v4 จึงอยู่ต่ออีกระยะ และรายการ v6 หยุดมีผลโดยไม่มีการแก้ไขที่มองเห็นได้

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

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

การตั้งค่าฝั่งโฮสต์และราคาที่ต้องจ่าย

การตั้งที่อยู่บนโฮสต์ตัดคำถามเรื่องการจับคู่ออกไปทั้งหมด อินเทอร์เฟซจะขึ้นมาพร้อมที่อยู่นั้นไม่ว่า DHCP จะตอบหรือไม่ และนั่นคือสิ่งที่คุณต้องการจากเครื่องที่ต้องเข้าถึงได้หลังรีบูตเราเตอร์

ราคาคือความเป็นเจ้าของ ตอนนี้คุณเป็นผู้ให้คำนำหน้า เกตเวย์ และตัวแปลงชื่อ และคุณต้องเก็บที่อยู่ไว้นอกพูลไดนามิกเอง บน Ubuntu ที่ใช้ netplan ไฟล์ /etc/netplan/01-vpn.yaml เป็นตัวเก็บ:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [192.168.50.10/24]
      routes:
        - to: default
          via: 192.168.50.1
      nameservers:
        addresses: [192.168.50.1]

ผู้ใช้ NetworkManager ไปถึงสถานะเดียวกันด้วย nmcli con mod "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.50.10/24 ipv4.gateway 192.168.50.1 จากนั้น nmcli con up "Wired connection 1" ใช้ netplan ด้วย netplan try ในการลองครั้งแรกแทน netplan apply เกตเวย์ที่พิมพ์ผิดจะทำให้กล่องหลุดออกจากเครือข่ายและปล่อยให้คุณไปหาคอนโซล

จงเก็บการจองที่ตรงกันไว้เช่นกัน มันไม่ซ้ำซ้อน รายการบันทึกที่อยู่ไว้ฝั่งเราเตอร์และกันไม่ให้เซิร์ฟเวอร์ DHCP มอบที่อยู่นั้นให้อุปกรณ์แขกหากมีคนขยายพูลในภายหลัง

ที่อยู่ใน LAN ที่คงที่ไม่ใช่ปลายทางสาธารณะ

ชี้พอร์ตฟอร์เวิร์ดไปที่ 192.168.50.10 แล้วกฎจะอยู่รอดทุกการเปลี่ยนแปลงฝั่ง LAN แต่มันไม่ได้ให้ที่อยู่อินเทอร์เน็ตที่คงที่แก่คุณ IP สาธารณะของคุณเป็นของ ISP และอาจขยับเมื่อเชื่อมต่อใหม่หรือเปลี่ยนโมเด็ม ซึ่งเป็นสิ่งที่ DNS แบบไดนามิกมีไว้

หลัง NAT ระดับผู้ให้บริการไม่มี IPv4 สาธารณะให้ส่งต่อเลย และไม่มีการจองใดสร้างขึ้นมา ตรวจหน้าต่าง WAN ของเราเตอร์ก่อนสิ่งอื่นใด ถ้าที่อยู่ในช่วงที่แชร์กัน การส่งต่อขาเข้าทำงานไม่ได้ไม่ว่าการจองจะสะอาดเพียงใด

ที่อยู่ที่สามคือพูลของทันเนล มักเป็นอะไรอย่าง 10.8.0.0/24 ที่อยู่เหล่านั้นมีอยู่เฉพาะในทันเนลและไม่เคยปรากฏบน LAN การสับสนกับที่อยู่ใน LAN ของเซิร์ฟเวอร์คือทางที่พอร์ตจะถูกส่งต่อไปยังไคลเอนต์ที่ออนไลน์เฉพาะตอนที่เชื่อมต่ออยู่

ตรวจเส้นทางตามลำดับที่มันพัง

เริ่มที่เราเตอร์ เปรียบเทียบรายการในตารางสัญญากับเป้าหมายของการจอง หากเซิร์ฟเวอร์ได้ที่อยู่ในพูลไป ตัวระบุก็ผิด และ ip link show บนโฮสต์จะให้ค่าที่ต้องนำไปเปรียบเทียบ

จากนั้นที่โฮสต์ ip -4 addr show eth0 ควรแสดงที่อยู่และคำนำหน้าที่คาดไว้ การที่มีที่อยู่ที่สองบนอินเทอร์เฟซเดียวกันมักหมายความว่า DHCP ยังทำงานอยู่ข้างการตั้งค่าแบบคงที่ของคุณ

จากนั้นการส่งต่อ ยืนยันว่าปลายทางยังเท่ากับที่อยู่ที่คุณเพิ่งตรวจสอบ และยืนยันว่ามีบางอย่างกำลังฟังด้วย ss -lntp การส่งต่อไปยังพอร์ตที่ปิดอยู่ดูจากภายนอกเหมือนการส่งต่อที่พังทุกประการ

ปิดท้ายจากภายนอก บนโทรศัพท์ที่ปิด Wi-Fi การทดสอบเดียวนี้แยก “ที่อยู่ภายในผิด” ออกจาก “การเข้าถึงจากภายนอกเสีย” สองปัญหาที่การตั้งค่านี้ชอบปนกัน

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

บทความที่เกี่ยวข้อง