특정 인터페이스를 통해 특정 IP 주소로 트래픽을 보내는 방법은 무엇입니까?

특정 인터페이스를 통해 특정 IP 주소로 트래픽을 보내는 방법은 무엇입니까?

myServerDebian Stretch VM(Windows 7 호스트의 VirtualBox에서 실행)에서 SSH를 통해 특정 원격 호스트( IP 라고 부르겠습니다 12.34.56.78) 에 연결하고 싶습니다 . 이를 위해 저는 Android 스마트폰을 USB 모뎀으로 사용하는데 훌륭하게 작동합니다. 인터넷에 액세스하여 "ping" 및 HTTP/HTTPS 트래픽을 생성할 수 있으며 다음 명령을 사용하여 SSH 연결을 열 수도 있습니다.

ssh [email protected] -b a.b.c.d -p portNumber -i ~/.ssh/id_rsa

참고: a.b.c.d이는 연결 시 USB 인터페이스에 할당된 동적 IP 주소입니다.

~/.ssh/config작업을 더 쉽게 하기 위해 다음과 같이 입력할 수 있도록 모든 설정을 지정하고 싶습니다 ssh myServer.

Host myServer
    HostName 12.34.56.78
    Port portNumber
#   BindAddress a.b.c.d     <== commented because this is part of the question
#   BindInterface usb0      <== same as above
    User httqm
    IdentityFile ~/.ssh/id_rsa
  • 줄 의 주석 처리를 제거하고 IP 주소를 지정할 수 있습니다 . 이는 작동하지만 동적이기 BindAddress때문에 전체 SSH 명령줄에 비해 아무런 이득도 제공하지 않습니다.a.b.c.d
  • 사용바인딩 인터페이스옵션( 제외 BindAddress)은 다음 오류 메시지와 함께 실패합니다.

    ~/.ssh/config: line 154: Bad configuration option: bindinterface
    ~/.ssh/config: terminating, 1 bad configuration options
    

BindInterface지시어는 Openssh 7.7(https://www.openssh.com/releasenotes.html) 그리고 나는 가졌다:

$ dpkg -l openssh-client
openssh-client      1:7.4p1-10+deb9u6

이 문제를 해결하기 위해 몇 가지 솔루션을 고려하고 있습니다.

  1. 명령을 사용하여 모든 대상이 USB 인터페이스를 통과 ip route ...하도록 경로를 정의합니다 . myServer지금까지 나는 다음과 같은 명령을 시도했습니다.

    ip route add to 12.34.56.78 protocol static dev usb0
    

명령 자체는 오류를 반환하지 않지만 SSH 연결을 열 수 없으며 ssh myServerping도 할 수 없습니다.

  1. 12.34.56.78과 주고받는 모든 트래픽이 usb0 인터페이스를 통과하도록 Netfilter 규칙을 정의합니다. 그게 효과가 있을까요? 이 솔루션을 조사해야 합니까?

  2. openssh-client백포트에서 업그레이드(사용 가능한 경우)

무엇이 작동하고 작동하지 않는지(그리고 그 이유는 무엇인지) 설명해 주실 수 있나요? 짧은 명령줄을 사용하여 SSH 호스트에 연결하려는 목표를 어떻게 달성할 수 있습니까? 예를 들어 ssh myServer내 소스 주소가 동적이라는 점을 고려하면 어떨까요?

관련 정보