สมมติว่าฉันมีที่อยู่เครือข่ายสาธารณะสองแห่งบนเซิร์ฟเวอร์ของฉัน: หนึ่ง NAT ผ่าน ISP (192.168.99.0/24) และ VPN ผ่าน ISP อื่น (192.168.1.0/24) ที่แตกต่างกันกำหนดค่าเส้นทางเส้นทางต่อโฮสต์ไป เซิร์ฟเวอร์ VPN ผ่าน ISP ของฉัน
นี่คือตารางเส้นทางเริ่มต้นของฉัน ฉันกำลังกำหนดเส้นทางผ่าน ISP ของฉันในซับเน็ต 192.168.99.0/24
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 0 0 0 eth1
55.66.77.88 192.168.99.1 255.255.255.255 UGH 0 0 0 eth1
192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0
ตอนนี้ฉันต้องการเชื่อมต่อ TCP ใหม่เพื่อเปลี่ยนเป็น 192.168.1.0/24 ของฉันดังนั้นฉันพิมพ์ต่อไปนี้:
$ route add -net 0.0.0.0 gw 192.168.1.1 dev tap0
เมื่อฉันทำเช่นนี้จะทำให้การเชื่อมต่อ TCP ที่ยาวนานมานานบางอย่างค้าง มีวิธีให้ฉันเปลี่ยนอินเทอร์เฟซเริ่มต้นอย่างปลอดภัยสำหรับการเชื่อมต่อใหม่หรือไม่ขณะที่อนุญาตให้การเชื่อมต่อ TCP ที่มีอยู่ใช้เส้นทางเก่า
ฉันโอเคกับโซลูชันที่ใช้งานได้เฉพาะกับการเชื่อมต่อ TCP ที่กำหนดไว้เท่านั้นและฉันไม่สนใจว่ามันจะเป็นอย่างไร ตัวอย่างเช่นหากมีวิธีการเพิ่มกฎ iptables ชั่วคราวสำหรับการเชื่อมต่อที่มีอยู่เพื่อบังคับให้พวกเขาผ่านเส้นทางเก่า แต่จะต้องมี บาง วิธีทำสิ่งนี้
แก้ไข: เพียงแค่ทราบเกี่ยวกับ "เส้นทางเพิ่ม - โฮสต์ ... " ง่าย ๆ สำหรับการเชื่อมต่อที่มีอยู่: วิธีการแก้ปัญหานี้จะทำงานถ้าฉันสบายดีกับออกจากเซ็ตย่อยของ IP บนอินเทอร์เฟซเก่า อย่างไรก็ตามในแอปพลิเคชันของฉันสิ่งนี้ไม่ได้แก้ปัญหาของฉันเพราะฉันต้องการอนุญาตให้การเชื่อมต่อใหม่เข้ามาในอินเทอร์เฟซใหม่แม้ว่าพวกเขาจะมีแหล่ง IP เดียวกัน ตอนนี้ฉันกำลังมองหาโดยใช้คำสั่ง "เส้นทาง IP" เพื่อตั้งค่ากฎการกำหนดเส้นทางตามแหล่งที่มา