เส้นทาง OpenBSD ผ่านเกตเวย์ที่ต่างกันซึ่งมี IP เหมือนกัน แต่มีอินเตอร์เฟสต่างกัน


9

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

ip route add $destination_1 via $gateway_ip dev $interface_1
ip route add $destination_2 via $gateway_ip dev $interface_2
ip route add $destination_3 via $gateway_ip dev $interface_3

เป็นต้น

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

คำถามของฉันคือฉันจะทำสิ่งนี้ใน OpenBSD ได้อย่างไร ฉันพยายามแล้วและล้มเหลว การค้นพบของฉันคือสำหรับปลายทางเฉพาะฉันสามารถ:

  • ระบุอินเทอร์เฟซ (หากปลายทางสามารถเข้าถึงได้โดยตรงบนลิงก์ - ซึ่งไม่ได้อยู่ในกรณีของฉัน)
  • ระบุเกตเวย์ IP เพราะปลายทางไม่ได้อยู่บนลิงก์โดยตรง

แต่ฉันไม่สามารถหาวิธีระบุทั้งสองได้


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

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

ลิงก์แบบจุดต่อจุดไม่สนใจเกตเวย์
kasperd

ตกลง แต่ฉันจะทำให้มันทำงานได้อย่างไร
bao7uo

วิธีการเกี่ยวกับการใช้-Tตัวเลือกrouteและการกำหนดตารางเส้นทางสำหรับแต่ละปลายทาง ฉันคิดว่ามันให้ "ฉนวน" ที่ดีกว่าสำหรับกฎต่ออินเตอร์เฟส
gmelis

คำตอบ:


1

ใช้-ifpปรับปรุงเพื่อเส้นทาง จากหน้าคน :

In a change or add command where the destination and gateway are not
sufficient to specify the route, the -ifp or -ifa modifiers may be 
used to determine the interface name or interface address.

ดังนั้นสิ่งนี้ทำงาน:

# for  arg in tun0 tun1 tun2; do ifconfig $arg  192.168.11.1/24; done
# route add 10/8 -iface 192.168.11.1 -ifp tun0
add net 10/8: gateway 192.168.11.1
# route add 172.16/12 -iface 192.168.11.1 -ifp tun1
add net 172.16/12: gateway 192.168.11.1
# route add 192.168.254/24 -iface 192.168.11.1 -ifp tun2
add net 192.168.254/24: gateway 192.168.11.1
# route show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio 
Iface
10/8               192.168.11.1       GS         0        0     -     8 tun0
localhost          localhost          UHl        0       22 32768     1 lo0
172.16/12          192.168.11.1       S          0        0     -     8 tun1
192.168.11.1       192.168.11.1       UHhl       1        4     -     1 tun0
[...my real routes omitted...]
192.168.254/24     192.168.11.1       S          0        0     -     8 tun2

หากเส้นทางปลายทางของคุณมีการทับซ้อนกันแล้วคุณสามารถใช้PFและเส้นทางเพื่อให้ตรงกับป้ายหรือเส้นทางโดเมน


ขอบคุณสำหรับสิ่งนี้. ฉันลองแล้วและใช้งานไม่ได้ ฉันไม่คิดว่า-ifaceใช้เพราะที่อยู่เกตเวย์สำหรับเราเตอร์อัปสตรีม (กระโดดต่อไป) ไม่ใช่ IP ของอินเทอร์เฟซในกล่อง openbsd เอง เมื่อฉันลบ -iface มันใช้งานได้ แต่สำหรับอินเตอร์เฟส VPN ตัวแรกเท่านั้น ดังนั้นฉันจึงสามารถทำได้-ifp tap0และใช้งานได้ แต่ถ้าฉันทำ-ifp tap1มันล้มเหลวด้วยno route to hostเมื่อฉันพยายามเพิ่มเส้นทาง
bao7uo

แม้ว่ามันจะไม่สามารถแก้ปัญหาได้ แต่ฉันก็มอบรางวัลให้คุณเพราะฉันรู้สึกขอบคุณที่คุณพยายามช่วย
bao7uo

ฉันงงงวยอย่างจริงใจกับสิ่งที่ linux กำลังทำอยู่ภายใต้ประทุนนั่น ... BSD กำลังทำสิ่งที่ "ถูกต้อง" โดยบ่นว่าไม่ได้อยู่ในท้องถิ่น คุณลอง-link -llinfoแฟล็กไปยังคำสั่ง route หรือไม่? นอกจากนี้ฉันคิดว่า-ifaceจะใช้ (คุณได้รับข้อผิดพลาดโดยไม่มีการกำหนดเส้นทางตาราง / domians ตามที่คุณระบุไว้เนื่องจากความขัดแย้งเส้นทางเครือข่ายและไม่สามารถเพิ่มอีกครั้ง) OpenVPN / แตะ? สงสัยว่าอะไรคือการจัดเตรียมจุดสิ้นสุด "อื่น ๆ " หากเป็น ptp ปลอม
quadruplebucky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.