두 개의 인터페이스에 두 개의 공용 IP 주소가 있는 컴퓨터가 있습니다. 이 기계는 실행 중입니다 sshd
. SOCKS 인터페이스(예:)를 사용하여 터널을 생성할 때 -D
나가는 연결에 사용할 인터페이스를 지정하는 방법이 있습니까 ?
답변1
엄밀히 말하면 ssh의 -b 옵션(mgjk 제안)과 라우팅을 결합하여 문제를 해결할 수 있습니다. 사이트 8.8.8.7(단지 구성한 예)에 대한 터널을 구축하려고 하고 연결이 eth1을 통과하기를 원한다고 가정하고 다음 명령을 수행합니다.
sudo route add -host 8.8.8.7 dev eth1
올바른 경로가 추가되고 모든 것이 잘 될 것입니다.
그러나 이는 "정책 라우팅" 적용의 완벽한 예이기도 합니다. 터널이 설정된 머신에서 라우팅 테이블을 구성해야 합니다(즉명령이 있는 곳SSH -D ...발행) 단순히 두 개의 인터페이스가 존재하는 유일한 인터페이스이기 때문입니다.
David Schwartz는 간결하고 충분한 설명을 제공합니다.이 웹사이트에서. 유일한 중요한 세부 사항은 다음과 같습니다. eth0이 192.168.1.2이고 eth1이 10.0.0.2라고 가정하면 다음과 같이 말할 수 있습니다.
ip rule add from 10.0.0.2 table <NAME1>
ip rule add from 192.168.1.2 table <NAME2>
이 시점에서 -b를 통해 ssh 연결을 eth1 주소에 바인딩하면 작업이 완료됩니다.
답변2
-b를 사용하면 어떻게 되나요?
-b bind_address
Use bind_address on the local machine as the source address of
the connection. Only useful on systems with more than one
address.