VPN 服务器(滩头阵地)无需 root?

VPN 服务器(滩头阵地)无需 root?

如何在没有 root 权限的主机上设置 VPN 服务器?

我有以下限制:

  • 在服务器A上,我没有root权限。我只能在我的主目录中操作。特别是,我也无法创建tun设备。
  • 在客户端B上,我拥有完全的控制权,可以安装我想要的东西。
  • SSH 端口转发 (-L/-R) 和 SOCKS 代理 (-D) 可以工作,但在我的情况下不行。我客户端上的软件使用许多不同的端口,所以我倾向于使用 SOCKS,但它也在内核级别运行,所以我无法说服它tsocks使用代理。可行的一件事是在 B 上的虚拟机中运行我的客户端软件,并对整个虚拟机进行袜子化 - 但我真的不想走这条路。
  • 我不需要特权端口,所以 A 上的非 root 应该没问题。
  • 它不一定是“真正的”VPN,但本质上类似的东西就足够了。我在 B 上的进程应该能够与 A(以及连接的设备)上的进程进行通信,就像它们在一台机器上一样,而无需重写它们。

我不相信有一种优雅的方法可以做到这一点 -正确的方法是询问 A 的管理员,或将 B 插入同一个网络 - 但现在我只是好奇这是否可以作为概念证明来完成。

答案1

好吧,服务器 A 上的这种“我没有 root”访问权限可能会成为创建良好 VPN 解决方案的问题,因为:

  • IP-IP隧道需要界面操作;
  • PPTP还需要root权限才能创建接口;
  • 开放VPN甚至可以以非特权用户身份运行,但需要一些技巧,例如允许 sudo 命令ip以允许创建tun界面;
  • 强天鹅需要降低权限CAP_NET_ADMIN才能CAP_NET_RAW工作,并且以非 root 用户身份运行 IKE 守护进程会破坏对 iptables updown 脚本的支持。

我的朋友,你剩下什么:依靠SSH 袜子代理。在本地计算机上,以 root 身份运行:

ssh -C2qTnN -D 8080 username@serverA

方法:压缩、仅限 SSH2、安静、强制伪 tty 分配、从 /dev/null 重定向标准输入以及将 ssh 客户端置于“主”模式以进行连接共享。

现在,您所要做的就是运行您的应用程序。如果它像 Firefox 一样具有本机 SOCKSv5 支持,则只需将“localhost:8080”配置为代理服务器即可。

如果您的应用程序本身不支持此代理,请使用以下命令运行它代理链。只需安装在您的客户端上即可。

不幸的是,您不想采用的唯一解决方案似乎是唯一的。

链接:

相关内容