在我当前的终端中仅启用 VPN 的命令

在我当前的终端中仅启用 VPN 的命令

我正在使用 Linux Mint 19.3

我想跑的两个实例youtube-dl

所有流量terminal 1应该经过常规网络

所有流量terminal 2应该经过VPN

有没有什么命令可以使能够terminal 2为所有未来的命令使用 VPN 连接?换句话说,是否有任何命令可以指示terminal 2对所有未来的命令使用 VPN 连接?

我发现将unix程序绑定到特定的网络接口,但是我想在特定的终端上绑定VPN给所有以后发起的程序,而不是某个特定的程序。

我想要的是,打开一个终端并运行youtube-dl以使用常规连接进行工作。但是,如果我启用 VPN(通过命令)并运行,youtube-dl那么youtube-dl将通过 VPN 连接进行工作。

因此,可能的最终结果是,同一程序的两个实例,一个通过常规网络,另一个通过 VPN,其中网络选择是实时的并且不是预定义的(通过路由表或类似的东西)。

我找到了一个工具VPN,但不确定这是否是我正在寻找的或者是否有更好的解决方案。

答案1

您不能“指示终端 2 对所有未来命令使用 VPN 连接”。

但是,您可以创建一个新的网络命名空间,在该命名空间中运行您的 VPN 或将 VPN 网络接口移动到该命名空间中(可能在以适当的方式将其连接到主网络命名空间和/或物理网络接口之后),然后在此网络命名空间中启动一个新的终端窗口,并让所有命令通过连接使用 VPN(并且仅使用 VPN 连接)。

谷歌上有很多关于网络命名空间的教程。您需要的主要命令是ip netns.您还需要对网络基础知识有足够的了解才能连接网络命名空间。

是的,vpnns工作方式非常相似。

答案2

您所问的问题已经在 StackExchange 上得到了解答:将unix程序绑定到特定的网络接口。我相信使用 App-Route-Jail 的解决方案将为您解决这个问题。我相信,您无法将终端窗口精确地绑定到 VPN,但您可以强制程序在执行时使用特定的网络接口。

如果有任何帮助,您可以使用正确的命令参数为 youtube-dl 创建一个包装器 shell 脚本,以强制其使用 VPN 并在终端 2 中使用该 shell 脚本来与 VPN 一起使用。

此类 shell 脚本的示例(需要 POSIX shell,例如 Bash)

#!/bin/bash
MARK=10 LD_PRELOAD=./mark.so /path/to/youtube-dl "$@"

请注意,这将要求您依赖两个可执行文件,一个始终通过正常网络运行,另​​一个始终通过 VPN。

相关内容