두 개의 인터페이스가 있는 Crunchbang VM이 있고 eth0
각 eth1
인터페이스는 OpenWRT VM( eth0
being 10.232.64.20
및
eth1
being 10.232.65.20
)에 연결되어 있습니다. 네트워크 관리자와 DHCP를 사용하고 있습니다. 나의 전반적인 목표는 여러 개의 연결을 갖고 ssh
이를 ifenslave
.
기본적으로 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 [email protected]
ssh: connect to host 1.2.3.4 port 22: Connection timed out
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
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 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
ssh: connect to host 1.2.3.4 port 22: Connection timed out
ssh
더 높은 메트릭을 사용하는 인터페이스를 강제로 사용하려면 어떻게 해야 합니까 ?
편집하다
구성을 구현하고 테스트했습니다.4.2. 다중 업링크/공급자를 통한 라우팅Linux 고급 라우팅 및 트래픽 제어 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 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
user@crunchbang:~$ ssh -b 10.232.65.20 [email protected]
Enter passphrase for key '/home/user/.ssh/id_rsa':
하지만 네트워크 관리자를 잃어야 할 것 같습니다. 이것이 왜 나쁜 생각인지 설명하거나 함정에 대해 경고할 수 있는 사람이 있다면 감사하겠습니다.
편집 2
네트워크 관리자 제거가 잘 진행되었습니다. 마지막 질문이 하나 있습니다. 시작 시 구성을 로드하는 현재 표준 방법은 무엇입니까?
답변1
우선, 문제에 대한 귀하의 해결책은 훌륭합니다. 둘째, 운영 체제에 따라 다릅니다. Crunchbag은 Debian을 기반으로 하므로 이 솔루션이 해당 작업을 수행합니다.
https://serverfault.com/questions/487939/permanently-adding-source-policy-routing-rules
RHEL 기반 시스템에서는 <ifname>-rule
및 를 추가할 수도 있습니다 <ifname>-route
.