저는 리눅스 민트 19.3을 사용하고 있습니다.
나는 달리고 싶다두 가지 인스턴스youtube-dl
.
모든 트래픽이 terminal 1
통과해야 함일반 네트워크.
모든 트래픽이 terminal 2
통과해야 함VPN.
할 수 있는 명령이 있나요?terminal 2
향후 모든 명령에 VPN 연결을 사용 하시겠습니까 ?즉, 할 수 있는 명령이 있습니까?terminal 2
향후 모든 명령에 VPN 연결을 사용하도록 지시하시겠습니까 ?
내가 찾은Unix 프로그램을 특정 네트워크 인터페이스에 바인딩, 그러나 특정 프로그램이 아닌 향후 실행되는 모든 프로그램에 특정 터미널의 VPN을 바인딩하고 싶습니다.
내가 원하는 것은 터미널을 열고 youtube-dl
일반 연결을 사용하여 작업을 실행하는 것입니다. 그러나 명령을 통해 VPN을 활성화하고 실행하면 VPN 연결을 통해 작동합니다 youtube-dl
.youtube-dl
따라서 가능한 최종 결과는 동일한 프로그램의 두 인스턴스입니다. 하나는 일반 네트워크를 통해, 다른 하나는 VPN을 통해 네트워크 선택이 실시간이고 미리 정의되지 않습니다(라우팅 테이블 등을 통해).
도구를 찾았어요VPN, 그러나 이것이 내가 찾고 있는 것인지 아니면 더 나은 해결책이 있는지 확실하지 않습니다.
답변1
"향후의 모든 명령에 VPN 연결을 사용하도록 터미널 2에 지시"할 수 없습니다.
그러나 새네트워크 네임스페이스, 해당 네임스페이스에서 VPN을 실행하거나 VPN 네트워크 인터페이스를 해당 네임스페이스로 이동한 다음(아마도 적절한 방식으로 기본 네트워크 네임스페이스 및/또는 물리적 네트워크 인터페이스에 연결한 후) 이 네트워크에서 이름을 지정합니다. 공간을 확보하고 모든 명령이 VPN(및 VPN 연결만)을 사용하여 연결되도록 합니다.
Google에는 네트워크 네임스페이스에 대한 많은 튜토리얼이 있습니다. 필요한 주요 명령은 다음과 같습니다 ip netns
. 또한 네트워크 네임스페이스에 연결하려면 네트워킹 기본 사항에 대해서도 충분히 알아야 합니다.
예, vpnns
매우 유사하게 작동합니다.
답변2
귀하가 요청한 질문은 이미 StackExchange에 답변되어 있습니다.Unix 프로그램을 특정 네트워크 인터페이스에 바인딩. App-Route-Jail을 사용하는 솔루션이 이 문제를 해결할 것이라고 믿습니다. 나는 터미널 창을 VPN에 정확하게 바인딩할 수는 없지만 프로그램이 실행될 때 특정 네트워크 인터페이스를 사용하도록 강제할 수 있다고 생각합니다.
도움이 된다면 올바른 명령 인수를 사용하여 youtube-dl에 대한 래퍼 셸 스크립트를 생성하여 VPN을 사용하도록 하고 터미널 2에서 해당 셸 스크립트를 사용하여 VPN과 작업할 수 있습니다.
이러한 쉘 스크립트의 예(Bash와 같은 POSIX 쉘 필요)
#!/bin/bash
MARK=10 LD_PRELOAD=./mark.so /path/to/youtube-dl "$@"
이를 위해서는 두 개의 실행 파일에 의존해야 합니다. 하나는 항상 일반 네트워크를 통해 실행되고 다른 하나는 항상 VPN을 통해 실행됩니다.