두 개의 인터페이스에 두 개의 공용 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.