端口映射
在《DuplexPipe二三事(二)》中介绍了瑞士军刀 nc 的用法:nc 就像给程序一张飞机票,让原本只能在本地执行的程序也能运行在网络上!但网络和现实交通一样,很多地方需要中转才能到达(比如外网计算机无法直接访问公司内部 Web 服务器)。
为实现公网对内部网络的访问,需要对数据进行转发(即端口映射)。比如内网“主机A”开启了 Web(port 80)服务,需要在“服务器的网关”上设置:凡来自 Internet 上对 80 端口的请求,全部转发给内部网络中的“主机A”。这里的“服务器网关”可以是路由器、交换机或者一台 PC 。
工具简介
FPipe 是一款命令行下的端口映射工具,可以映射 TCP/UDP 协议,支持连接数的最大上限。你可以从它的官网(http://www.foundstone.com)下载到最新版本。下面是它的用法和几个常用的选项:
- FPipe [-hvu?] [-lrs ] [-i IP] IP
- -l 在本地监听的端口
- -s 从哪个端口发送出重定向的信息
- -r 要定向到IP主机的端口号
- -u UDP 模式
- -v 详细地显示过程
- 示例:
- FPipe -v -l 80 -s 90 -r 80 192.168.1.100
- 作用就是将来自本机80端口的信息,通过90端口,转发到主机192.168.1.100的80端口上去。
你可以尝试执行:“FPipe -l 80 -s 80 -r 80 203.208.39.160
”,然后访问“http://localhost/
”就会打开 Google 首页,因为203.208.39.160
就是 Google 主机的 IP 地址,^_^。更多的内容请参见程序附带的帮助文档。
总结
对于在《DuplexPipe二三事(一)》中提出的“进程通信”问题,nc 可以让本地程序通过网络进行通信;本文介绍的 FPipe 就像一座桥梁,让内网和外网的网络程序也能顺利通信。但可惜 FPipe 本身不够灵活,它只有“监听本地端口,连接远程主机”这一种通信模式。用来应付服务端监听、客户端主动连接的 C/S 模式还可以,如果碰到两端都监听或两端都主动连接的网络程序,就无能力为了。为解决这个问题,需要清除我们的主角——“DuplexPipe”,详细内容请看《DuplexPipe二三事(四)》。