SSH 터널에 대한 발신 인터페이스 지정

SSH 터널에 대한 발신 인터페이스 지정

두 개의 인터페이스에 두 개의 공용 IP 주소가 있는 컴퓨터가 있습니다. 이 기계는 실행 중입니다 sshd. SOCKS 인터페이스(예: -D)를 사용하여 터널을 생성할 때 나가는 연결에 사용할 인터페이스를 지정하는 방법이 있습니까 ?

답변1

엄밀히 말하면 mgjk에서 제안한 대로 ssh의 -b 옵션과 라우팅을 조합하여 문제를 해결할 수 있습니다. 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.

관련 정보