漫话:代理与内网穿透

写在前面
很多小伙伴搞不清楚“代理”、“甚至反向代理”、“内网穿透”这些概念。今天我们不讲枯燥的定义,用几张图和一个“传话筒”的故事,带你轻松看懂!

第一话:谁是“中间人”?(什么是代理)

想象一下,你(客户端 Client)是一只住在局域网里的小白兔 🐰。你想去访问远方的城堡(服务器 Server)获取信息。

但是,有时候你不能直接飞到城堡去。可能因为路太远,也可能因为中间有一堵大墙。

这时候,你需要一个帮手——机器人 🤖(代理 Proxy)。
它就像一个“传话筒”或者“中间人”。你不直接找城堡,而是把请求告诉机器人,机器人替你去跑腿,拿回东西后再转交给你。

这就叫 “代理”


第二话:我想出去看看(什么是正向代理)

有一天,小白兔🐰在公司里上班。公司的网络管理很严,周围围了一圈高高的红砖墙(防火墙),不让大家随便上外网摸鱼。

这时候,小白兔想去外面的世界(比如 Google 查资料)看看,怎么办?

聪明的网管在墙上开了一个小窗口,并在那里安排了一个特权机器人🤖。

  1. 小白兔(Client) 拿着写有网址的信(Request),递给 机器人(Proxy)
  2. 机器人 检查一下信件,发现没问题,就转身通过窗口,帮小白兔去 城堡(Server) 取回了网页内容。
  3. 机器人 再把内容递回给小白兔。

这就是 **“正向代理” (Forward Proxy)**。

正向代理示意图

小白兔通过机器人访问外面的世界

关键点:

  • 服务对象:正向代理是为客户端服务的。
  • 位置:通常和客户端在同一个圈子(局域网)里。
  • 感知:客户端(小白兔)知道机器人的存在,并且需要主动把信给它。

⚡️ 进阶技能:DHCP 自动配置 (PAC)

在复杂的公司网络里,我们不想每一台电脑都手动告诉它“去找那个机器人”。我们可以用魔法卷轴(配置文件)自动分发这个信息。

以 OpenWRT 路由器为例,我们可以在 /etc/config/dhcp 里加一行咒语:

1
2
3
4
5
6
config dhcp 'lan'
option interface 'lan'
# ... 其他配置
# 这里的 252 是 DHCP 选项,告诉设备 PAC 文件的位置
list dhcp_option '252,http://192.168.1.1/proxy.pac'
# ...

这样,新接入的小白兔们就能自动获得“出墙”指南了!


第三话:我想回家看看(什么是内网穿透)

故事继续。小白兔🐰下班回家了。现在它身处外面的大世界(公网),但它突然想起:“哎呀,我有份重要的文件落在家里那台不出门的电脑上了!”

这时候问题来了:

  • 家里的电脑(内网服务器)躲在厚厚的墙里。
  • 家门(路由器)通常是关着的,外面的人根本找不到门牌号(没有公网 IP)。
  • 你想直接钻进去?没门!🚫

这时候,我们需要一种反向的打洞技术——**内网穿透 (Intranet Penetration)**。

我们需要在公网(外面的世界)找一个大家都能看到的中转站(比如一台有公网 IP 的 VPS)。

  1. 家里的机器人(内网服务) 先启动,主动扛着铲子,不仅连上中转站,还悄悄挖了一条 “秘密地道”(长连接/隧道)。
  2. 虽然外面的人进不去家,但家里的机器人可以主动出来呀!它通过地道在地表占了个坑。
  3. 现在的 小白兔(你) 只需要访问外面的这个中转站。
  4. 中转站把你的请求,顺着那条早已挖好的 “秘密地道” 传给家里的机器人。
  5. 机器人拿了文件,再原路送出来。

内网穿透示意图

通过秘密地道回家取数据

这就是大名鼎鼎的 FRPNgrok 等工具做的事情。

总结一下:

  • 正向代理:是你要出去,找个帮手带路。
  • 内网穿透:是你要进来,让里面的人先挖条地道接应你。

希望这个小故事能帮你彻底搞懂这两个概念!下期见!👋