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

สองแบบ สองขอบเขต

Site-to-siteRemote access
Endpointstwo gatewaysa gateway and each client
Who configuresnetwork ownerseach user or an MDM
Scope of reachwhatever the gateways routewhatever the client is granted
Broadcast discoverynot carriednot carried

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

ใช้ 10.10.0.0/24 ที่ไซต์หนึ่งและ 10.20.0.0/24 ที่อีกไซต์ เกตเวย์ A ต้องมีเส้นทางหรือตัวเลือกทราฟฟิกที่ส่งคำนำหน้า 10.20.0.0/24 เข้าไปในทันเนล และเกตเวย์ B ต้องมีภาพสะท้อนของสิ่งนั้น จากนั้นโฮสต์ทั้งสองฝั่งใช้การเชื่อมต่อ IP ธรรมดาและไม่เคยรู้ว่ามีทันเนลอยู่ ความล่องหนนั้นคือคุณสมบัติ และเป็นเหตุผลที่ความล้มเหลวดูเหมือนข้อผิดพลาดเครือข่ายทั่วไปไม่ใช่ข้อผิดพลาดของทันเนล

แบบอิงนโยบายกับแบบอิงเส้นทางไม่ใช่ทันเนลเดียวกัน

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

StrongSwan แสดงมุมมองทั้งสองโดยตรง และการอ่านทั้งสองร่วมกันคือวิธีรู้ว่าคุณติดตั้งโมเดลใดจริง

swanctl --list-sas
ip xfrm policy
ip -4 route show table all | grep -E '10\.(10|20)\.'

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

วางแผนการกำหนดแอดเดรสก่อนสร้างทันเนล

ช่วงที่ทับซ้อนกันคือข้อผิดพลาดการออกแบบที่แก้ด้วยการกำหนดค่าไม่ได้ หากทั้งสองไซต์ใช้ 192.168.1.0/24 โฮสต์ที่ต้องการ 192.168.1.50 จะมีผู้สมัครสองรายและไม่มีวิธีเลือก ทันเนลจะยืนยันตัวตนได้ ความเชื่อมโยงด้านความปลอดภัยจะถูกสร้างขึ้น และการตัดสินเส้นทางก็ยังผิดหรือกำกวมอยู่ดี

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

แก้ปัญหา MTU แต่เนิ่น ๆ ด้วย ทันเนลลดเพย์โหลดที่ใช้ได้ และดีไซน์ที่พึ่งการแบ่งแพ็กเก็ตมีพฤติกรรมต่างจากดีไซน์ที่ตรึง MSS ที่เกตเวย์

การส่งต่อและนโยบายอยู่ภายนอกทันเนล

เกตเวย์ต้องยินยอมส่งต่อแพ็กเก็ตระหว่างอินเทอร์เฟซของทันเนลกับอินเทอร์เฟซ LAN และทั้งสองทิศทางต้องมี นโยบายที่อนุญาตบริการ ใน Linux สิ่งเหล่านี้เป็นการตั้งค่าสองอย่างแยกกัน บวกกับกฎไฟร์วอลล์ที่ตัดสินว่าการไหลที่ถูกส่งต่อนั้นได้รับอนุญาตหรือไม่

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -s 10.20.0.0/24 -d 10.10.0.0/24 -j ACCEPT
iptables -A FORWARD -s 10.10.0.0/24 -d 10.20.0.0/24 -j ACCEPT

โฮสต์ปลายทางเพิ่มชั้นที่สาม: ไฟร์วอลล์ของมันเองยังต้องยอมรับไคลเอนต์จากซับเน็ตระยะไกล เซิร์ฟเวอร์ไฟล์ที่อนุญาตเฉพาะ /24 ภายในของตนจะปฏิเสธทราฟฟิกที่ส่งต่อมาจาก 10.20.0.7 ไม่ว่าทันเนลจะดูแข็งแรงเพียงใด และการปฏิเสธนั้นอ่านผิดว่าเป็นความล้มเหลวของเส้นทางได้ง่าย

ทดสอบจากโฮสต์ ไม่ใช่จากเกตเวย์

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

ip route get 10.10.0.5 from 10.20.0.7
ping -I 10.20.0.7 10.10.0.5
curl -sv --max-time 5 http://files.10-10.internal/ -o /dev/null

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

เลือกดีไซน์ตามคำถามที่คุณกำลังตอบ: คุณกำลังเชื่อมเครือข่ายหรือรับอุปกรณ์เข้า ทุกอย่างอื่นรวมถึงผู้ให้บริการที่คุณกำหนดค่าก็มาจากคำตอบนั้น

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