通过代理服务器向 Internet 发送 HTTP 请求

通过代理服务器向 Internet 发送 HTTP 请求

我有一个客户端,它无法直接访问互联网。但它通过 LAN 连接连接到服务器,而服务器可以访问互联网。

我想从客户端通过服务器向互联网发送 HTTP 请求。我该怎么做?

+--------+        +--------+        +--------+
|        |  LAN   | Ubuntu |   WAN  |        |
| Client <--------> 16.04  <-------->  WWW   |
|        |        | Server |        |        |
+--------+        +--------+        +--------+

脚步:

  1. 客户端于以下时间向 LAN 上的服务器发送请求https://用户:密码@本地服务器:1234
  2. 服务器将请求转发到远程端点https://用户名:密码@远程服务器

注意:我只需要将 HTTP 请求转发到单个端点

我一直在关注跑步乌贼或者微型代理在服务器上,但我不确定如何正确配置它们,或者这是否是最简单的方法。这里需要代理服务器吗?

答案1

有两种解决方案。第一 - 在服务器上配置 NAT,第二 - 配置 HTTP 代理。因此,从我的角度来看,对于您的情况最好的方法是配置 NAT,您不需要安装任何其他软件,只需配置防火墙即可。

要配置它,iptables您应该执行两个步骤:

首先确保内核中启用了数据包转发

# echo 1 > /proc/sys/net/ipv4/ip_forward

您还可以通过添加以下行使其永久生效/etc/sysctl.conf

net.ipv4.ip_forward = 1

然后您应该在iptables配置中添加两个规则:

-A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination internet-ip:1234
-A POSTROUTING -p tcp -m tcp --dport 1234 -j MASQUERADE

可以通过命令完成:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination internet-ip:1234
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 1234 -j MASQUERADE

用这个你应该检查一下转发块的规则,它看起来像这样-A FORWARD -j REJECT --reject-with icmp-host-prohibited。如果存在,可以用命令删除它:

iptables -t filter -D FORWARD -j REJECT --reject-with icmp-host-prohibited

另外,您可以阅读有关在ufw互联网上启用转发的文章。这里有两篇[1][2]例子。

相关内容