SSH 터널을 SSH 서버의 특정 아웃바운드 IP 주소로 제한하려면 어떻게 해야 합니까?

SSH 터널을 SSH 서버의 특정 아웃바운드 IP 주소로 제한하려면 어떻게 해야 합니까?

질문을 올바르게 표현했으면 좋겠습니다. 2개의 인터넷 연결을 실행하여 테스트하기 위한 SSH 서버가 있습니다. LAN 연결은 항상 켜져 있지만 USB 연결은 간헐적으로 켜져 있습니다. USB 연결의 IP 주소만 사용하여 인터넷을 탐색하도록 터널을 제한할 수 있습니까?

이것이 내가 현재 사용하고 있는 것입니다:

ssh -v -D 3456 [email protected];

이것은 훌륭하지만 서버의 보조 USB 연결이 변경되었는지 알려주지 않습니다. USB 연결의 IP(매개변수 고려 사항의 경우 199.90.09.78)를 알고 있으므로 터널을 USB만 사용하도록 제한하고 USB에 장애가 발생하면 중단될 수 있도록 하고 싶습니다. 나는 다음을 가지고 놀았습니다 :

ssh -v -D *:3456 -R *:3456:199.90.09.78:80 [email protected];

하지만 -R을 잘못 사용하고 있는 것 같습니다. 이를 달성하는 더 좋은 방법이 있습니까?

답변1

이 작업을 수행하기 위한 ssh 옵션을 모르겠습니다. 라우팅 문제인 것 같습니다. SSH 데몬의 모든 트래픽을 USB 연결로 정책 라우팅하려고 합니다. 정책 라우팅을 사용하면 다른 경로(귀하의 경우 USB 연결을 통해)를 통해 패킷을 라우팅할 수 있습니다. ip정책을 설정하고 iptables해당 정책에 대한 패킷에 태그를 지정 해야 합니다 .

게이트웨이를 통해 모든 트래픽을 라우팅하는 (테스트되지 않은) 예는 다음과 같습니다 10.1.2.3.

iptables -t mangle -A OUTPUT -m owner --uid-owner yourusername -j MARK --set-mark 2
ip rule add fwmark 2 table 3
ip route add default via 10.1.2.3 table 3
ip route flush cache

사용자의 모든 패킷에는 yourusernameID 태그가 지정됩니다 2. 그런 다음 규칙에는 태그가 게이트웨이로 패킷을 보내는 라우팅 테이블을 2따라야 한다고 명시되어 있습니다 . 마지막으로 경로 캐시가 지워져 새 경로가 선택됩니다(이전에 계산된 경우).310.1.2.3

여기서는 SSH 사용자가 yourusernameSOCKS 터널 전용이고 USB 연결을 통해 연결한다고 가정합니다.

관련 정보