ฉันจะบังคับให้ ssh ใช้อินเทอร์เฟซที่สองที่มีเมตริกที่สูงกว่าได้อย่างไร


9

ฉันมี VM Crunchbang กับสองอินเตอร์เฟซeth0และeth1แต่ละแห่งซึ่งเชื่อมต่อกับ OpenWRT VM ( eth0เป็น10.232.64.20และ eth1ถูก10.232.65.20) ฉันใช้ตัวจัดการเครือข่ายและ DHCP เป้าหมายโดยรวมของฉันจะมีหลายการเชื่อมต่อและพันธะพวกเขาด้วยsshifenslave

โดยค่าเริ่มต้นeth1(ด้วยเหตุผลบางอย่าง) เป็นเกตเวย์เริ่มต้น:

user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1  proto static
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

ฉันเพิ่มเส้นทางสำหรับeth0:

user@crunchbang:~$ sudo ip route add default via 10.232.64.1 dev eth0  proto static metric 1

จากนั้นฉันมีสองเส้นทาง:

user@crunchbang:~$ ip ro
default via 10.232.65.1 dev eth1  proto static
default via 10.232.64.1 dev eth0  proto static  metric 1
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

อย่างไรก็ตามsshจะออกไปทางeth1:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

หลังจากเปลี่ยนตัวeth0ชี้วัดฉันมี:

user@crunchbang:~$ ip ro
default via 10.232.64.1 dev eth0  proto static  metric 1
default via 10.232.65.1 dev eth1  proto static  metric 2
10.232.64.0/24 dev eth0  proto kernel  scope link  src 10.232.64.20
10.232.65.0/24 dev eth1  proto kernel  scope link  src 10.232.65.20

และตอนนี้sshออกไปทางeth0:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
ssh: connect to host 1.2.3.4 port 22: Connection timed out

ฉันจะบังคับsshให้ใช้อินเทอร์เฟซที่มีเมตริกที่สูงกว่าได้อย่างไร

แก้ไข

ฉันได้นำไปใช้และทดสอบการกำหนดค่าใน4.2 การกำหนดเส้นทางสำหรับส่วนอัพลิงค์/ ผู้ให้บริการหลายส่วนของ Linux Advanced Routing & Traffic HOWTO เนื่องจากการกำหนดค่านั้นง่ายและฉันไม่พบข้อผิดพลาดฉันจะแสดงโค้ดและผลลัพธ์โดยมีคำอธิบายน้อยที่สุด

root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20 table T0
root@crunchbang:~# ip route add default via 10.232.64.1 table T0
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20 table T1
root@crunchbang:~# ip route add default via 10.232.65.1 table T1
root@crunchbang:~# ip route flush table main
root@crunchbang:~# ip route add 10.232.64.0/24 dev eth0 src 10.232.64.20
root@crunchbang:~# ip route add 10.232.65.0/24 dev eth1 src 10.232.65.20
root@crunchbang:~# ip rule add from 10.232.64.20 table T0
root@crunchbang:~# ip rule add from 10.232.65.20 table T1
root@crunchbang:~# ip route add default scope global nexthop via 10.232.64.1 dev eth0 weight 1 nexthop via 10.232.65.1 dev eth1 weight 1

นี่คือตารางเส้นทางที่สร้างขึ้น:

root@crunchbang:~# ip route show table T0
default via 10.232.64.1 dev eth0 
10.232.64.0/24 dev eth0  scope link  src 10.232.64.20 

root@crunchbang:~# ip route show table T1
default via 10.232.65.1 dev eth1 
10.232.65.0/24 dev eth1  scope link  src 10.232.65.20 

root@crunchbang:~# ip ro
default 
    nexthop via 10.232.64.1  dev eth0 weight 1
    nexthop via 10.232.65.1  dev eth1 weight 1
10.232.64.0/24 dev eth0  scope link  src 10.232.64.20 
10.232.65.0/24 dev eth1  scope link  src 10.232.65.20 

ด้วยการกำหนดค่านั้น ssh เชื่อมต่อผ่านอินเทอร์เฟซทั้งสอง:

user@crunchbang:~$ ssh -b 10.232.64.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

user@crunchbang:~$ ssh -b 10.232.65.20 user@1.2.3.4
Enter passphrase for key '/home/user/.ssh/id_rsa': 

อย่างไรก็ตามปรากฏว่าฉันต้องสูญเสีย Network Manager หากใครสามารถอธิบายได้ว่าทำไมมันเป็นความคิดที่ไม่ดีหรือเตือนถึงข้อผิดพลาดฉันจะขอบคุณมัน

Edit2

การลบตัวจัดการเครือข่ายทำได้ดี ฉันมีหนึ่งคำถามสุดท้าย วิธีมาตรฐานปัจจุบันในการโหลดการกำหนดค่าเมื่อบูตคืออะไร


ฉันเพิ่งค้นพบ4.2 การกำหนดเส้นทางสำหรับอัปลิงค์ / ผู้ให้บริการหลายแห่ง ฉันจะอัปเดตคำถามที่รอดำเนินการ
mirimir

ใช้งานได้ดังนั้นฉันจะอัปเดตคำถามของฉัน
mirimir

ฉันไม่ทราบวิธีโหลดการกำหนดเส้นทางตอนบูตเนื่องจากต้องใช้สิทธิ์รูท การใช้สคริปต์ทำงานได้ดี แต่ฉันสามารถรีบูตเครื่องได้โดยไม่ต้องตั้งค่า
mirimir

คำตอบ:


1

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

/server/487939/permanently-adding-source-policy-routing-rules

ในระบบ RHEL ตามนอกจากนี้ยังมีความเป็นไปได้ในการเพิ่มและ<ifname>-rule<ifname>-route

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.