如何通过 openVPN 隧道转发来自第二台设备的所有流量?

如何通过 openVPN 隧道转发来自第二台设备的所有流量?

我想将一台新机器远程连接到我们公司的网络,以便它可以访问那里的活动目录。

旧机器可以通过 OpenVPN 隧道访问公司网络。

通过隧道连接时,它会根据 DHCP 获取公司内部 IP,名称服务器会被公司内部名称服务器覆盖,并且任何与公司网络相关的 IP 范围都会通过隧道进行路由。

在新机器上,我还没有账户,所以没有办法配置它。我首先需要将它连接到公司网络并输入我的凭据。

两台机器都是 macOS,但我认为这是一个常见的 Linux 问题。

我需要在旧机器上进行什么设置,以便新机器和公司网络认为它在网络中并获得自己的 IP 等?

我可以使用以太网电缆连接两台机器,旧机器具有正常的无线连接,并且 OpenVPN 隧道使用此无线连接。

因此,最大的问题是哪些数据包需要从以太网连接路由到隧道并返回?如果您知道如何在 Mac 上进行设置,那就太好了,但即使了解必须发生什么也会有很大帮助!

如果这能让生活更轻松,在转发时我不需要在第一台机器上使用 OpenVPN 隧道。如果拆分配置导致问题,我可以打开“通过隧道路由所有流量”。

假设(用于命令示例):广告服务器的名称为 xy.company.net,IP 为 1.2.3.4

在评论中澄清:这是一台新的 MacBook,我需要登录一次才能创建/激活我的用户帐户。为此,新的 MacBook 需要访问公司的 AD 服务器。该服务器可能配置了公司内部名称,因此它需要针对公司名称服务器执行 DNS 请求,这意味着它必须首先了解这些服务器,我假设是从 DHCP 了解的。

我还假设我可以为连接到旧 MacBook 以太网端口的所有设备创建虚假服务,但这听起来有点小题大做。

仍然相信可以有某种方式来共享旧 MacBook 的 openVPN 隧道(tun 接口)。基本上,来自以太网卡的所有流量都应转发到公司网络,所有响应都应转发到新 MacBook。

这叫桥还是别的什么?我该用路由命令还是别的什么?我对所有网络都有基本的了解,但没有实际经验。所以欢迎任何帮助!

答案1

更新/备注:根据 Daniel 的评论,由于缺少与“newmachine”的连接,此解决方案对他不起作用ssh。不过,还是保留它,以防其他人可以使用。

不幸的是,您无法提供太多细节。因此我们需要执行一些基本步骤。

您没有指定操作系统,但我会使用一些标准或 Linux 命令来解释。我假设“oldmachine”和“newmachine”正在运行 Linux 或“兼容”操作系统。

如果广告服务器的名称为 xy.company.net,IP 为 1.2.3.4,您有什么建议?

首先确保在“newmachine”上,tcp 端口 80 或 443 上没有任何运行(应该适用于 Linux 和 BSD):

newmachine$ netstat -lnt|grep ^tcp|awk '{print$4}' |sed 's,.*[.:],,'|sort -u|egrep '^80$|^443$'
newmachine$

如果没有80443写着,则没问题。否则,您需要终止在该端口上运行的进程。

然后在“newmachine”上启动一个 shell 会话,连接ssh到“oldmachine”并保持打开状态:

newmachine# ssh -L 80:1.2.3.4:80 -L 443:1.2.3.4:443 youraccount@oldmachine
oldmachine$

这两个-L选项创建了两个ssh隧道。

-L 80:1.2.3.4:80方法:

  • L=大号本地端口正在监听。意味着在“新机器”上将打开一个监听端口,即“隧道的起点”
  • 80这是监听“newmachine”的 TCP 端口
  • 1.2.3.4隧道端点的 IP 号(从“oldmachine”到达)
  • 80隧道端点的 TCP 端口

如果您没有收到任何错误消息,那么您的隧道已启动,您可以从“newmachine”连接到xy.company.net

但对于浏览器访问(使用虚拟主机?),我们还需要设置 DNS 解析. 只需添加一个条目到/etc/hosts

newmachine# echo "127.0.0.1 xy.company.net" >>/etc/hosts
newmachine#

为什么127.0.0.1

首先,您无法xy.company.net直接从“newmachine”访问,因为它未连接到公司的 VPN - 只有“oldmachine”才连接到。其次,您的访问是通过“oldmachine”ssh上的登录通过其 VPN 从“newmachine”隧道传输到的xy.company.net。这意味着您的隧道起点是“newmachine”本身 - 因此127.0.0.1

现在您应该能够xy.company.net通过以下 URL 从 Web 浏览器中访问“newmachine”:

它是如何工作的?对于 http:

  1. 浏览器获得 xy.company.net 的 DNS 解析 127.0.0.1
  2. 它连接到127.0.0.1 端口80。
  3. 您的隧道从此端口开始。流量通过您打开的ssh连接路由到“oldmachine”,然后从那里路由到1.2.3.4:80
  4. 从“oldmachine”到 1.2.3.4 的连接将转到公司的 VPN,然后最终转到贵公司的 1.2.3.4。

也许这并不完全符合您的问题,但在此基础上,您可以提供更多技术细节。经过几次迭代,我们最终可以找到适合您的完美答案。

注意:与之相反,-L还有一个-R打开端口的R表达表情并隧道返回。

注2:$表示shell提示符,#表示root shell提示符

相关内容