如何通过VPN发送cURL发出的HTTP请求?

如何通过VPN发送cURL发出的HTTP请求?

请原谅我(可能)问了一个菜鸟问题,但我对 Linux 网络还很陌生。我已经花了几天时间在互联网上搜索我的问题的答案,但找不到答案,所以我决定在这里发布一个问题,因为我知道很多熟练的专业人士访问这个网站。

无论如何,回到实际问题:我有两台可用的服务器。我们称它们为服务器 A 和服务器 B。我已使用 OpenSWAN 在服务器 A 和服务器 B 之间建立了 VPN 隧道。我已分配源 IP:服务器 A 为 192.168.2.1,服务器 B 为 172.16.2.1。我能够从服务器 A 成功 ping 172.16.2.1,从服务器 B 成功 ping 192.168.2.1,因此我假设我已经正确设置了 VPN,并且两台服务器都能够通信。

现在,在服务器 A 上,我希望能够执行以下操作:

当我通过 libcurl 发出 HTTP 请求时,如下所示:

卷曲http://checkip.dyndns.com/

我希望看到请求通过服务器 A 的公共 IP 地址发出。

但是,当我发出:

curl --接口 192.168.2.1 与上述请求相同的 URL

我希望请求通过 VPN,以便使用服务器 B 的 Internet 访问,因此我希望在 checkip 响应中看到服务器 B 的公共 IP 地址。

现在,当我发出这样的请求时,收到以下错误:

curl(7) :无法连接到主机

我该怎么做才能实现这一点,还是我完全走错了路?我只想使用服务器 A 的服务器 B 的互联网访问来访问某些网站,或者当服务器 A 的 ISP 由于某种原因关闭时。我不需要自动化,只是希望能够在需要时手动执行此操作。

我想我需要做一些路由或 NAT,但我不知道具体该做什么——过去几天我阅读了很多材料,但我很难弄清楚确切的 iptables 和/或路由命令应该是什么样子,以及设置 VPN 是否是正确的解决方案。

我真的希望这里有人能给我一些建议,如果我用这种菜鸟问题让大家发笑,我真的很抱歉。

此致!

答案1

仅用于访问某些网站

实际上,最简单的方法是通过 HTTP 代理 - 然后通过 PAC 文件将路由选择推送到浏览器。

或者当服务器 A 的 ISP 由于某种原因瘫痪时

这需要一个非常不同的解决方案 - 使用路由(在 iptables 中或通过 iproute2)。

VPN 实际上并不是必需的- 但如果你想运行一个远程 HTTP 代理,并且不让每个能找到它的网络骗子使用它 (*) 那么你必须有一些方法来限制客户端对服务的访问——VPN 是实现这一目标的好方法。

*) 我现在看到,在我管理的机器上,寻找开放网络代理的尝试比寻找开放 SMTP 中继的尝试还多

相关内容