关于端口知识的搬运

1、如何看本机开启的监听端口

  对于 Windows 系统,在命令行窗口(先运行 cmd 就会出现命令行窗口)运行如下命令,可以看到本机开启的【所有】监听端口。

netstat -an | find "LISTEN"

  用 netstat 的 o 选项可以看到每个监听端口分别是【哪个进程】开启的。命令如下

netstat -ano | find "LISTEN"

  对于 POSIX 系统(Linux & UNIX),把上述命令中的 find 改为 grep,具体如下:

netstat -an | grep "LISTEN"

2、什么是监听端口的“绑定地址”

  以虚拟机为例,执行刚才那个命令后,会显示如下输出

TCP  127.0.0.1:8118  0.0.0.0:0  LISTENING

  其中的 127.0.0.1 表示这个监听端口绑定的网卡地址,而 8118 表示监听的端口号。所谓的“绑定地址”,意思就是说,这个监听端口只接受来自该网卡的连接。
  因为 127.0.0.1 表示本机网卡地址;所以,绑定在 127.0.0.1 表示该监听端口只接受来自本机的连接。
  如果要让某个监听端口接受任意连接(包括外部电脑的连接),把绑定地址设置为 0.0.0.0 即可。

3、如何进行端口转发

  “端口转发”有时候也称为“端口映射”,即port forwarding。提及该术语,一般都是指 TCP 协议,有时候也称之为“TCP forward”或“TCP redirection”。
1.利用 Windows 自带的 netsh

  准备工作
  对于 Vista 以及更新版本的 Windows (比如 Win7 Win8 ...)可以直接使用该方案。
  对于 Vista 【之前】的 Windows(比如 WinXP、Win2003),需要先安装【IPv6 协议栈】,具体步骤如下:

1. 以管理员身份登录,进入“控制面板”下面的“网络连接”
2. 选中本地连接,点右键,在右键菜单选“属性”
3. 弹出“属性”对话框,点“安装”按钮
4. 弹出“选择网络组件类型”对话框,选“协议”,再点“添加”按钮
5. 在弹出的对话框中选“IPv6”,点“确定”

  命令详解
  (以下命令需要管理员身份才能执行)
  添加端口转发的命令

netsh interface portproxy add v4tov4 listenport=新开的监听端口 listenaddress=新开端口的绑定地址 connectaddress=要转发的地址 connectport=要转发的端口 protocol=tcp

  删除端口转发的命令

netsh interface portproxy delete v4tov4 listenport=新开的监听端口 listenaddress=新开端口的绑定地址

  命令举例
  比方说,本地已经运行了 Tor,端口是 8118,绑定在 127.0.0.1
  如果希望建立一个新的端口,端口号是 12345,绑定在 0.0.0.0 上,那么就执行如下命令。然后,发往 12345 端口的数据流就会被转发到 8118 端口。

netsh interface portproxy add v4tov4 listenport=12345 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=8118 protocol=tcp

  用前面介绍的 netstat 命令,看一下本机开启的端口。如果正常的话,就可以看到

TCP  0.0.0.0:12345  0.0.0.0:0  LISTENING

  如果要删除该端口转发,就执行如下命令

netsh interface portproxy delete v4tov4 listenport=12345 listenaddress=0.0.0.0

  删除之后,再用 netstat 命令查一下,这个 12345 的监听端口就看不到了
  优点

1. 无需安装任何第三方软件
2. 一旦设置好就会持续有效——即使系统重新启动也没关系。

  缺点

1. 需要以管理员身份登录,才能执行上述命令。
2. 该方法只能用于 Windows 系统。

2.利用 rinetd
  获取软件
  rinetd 是一个很小巧的、跨平台的、开源的工具,它能提供 TCP 端口转发的功能。上面提供了 Linux 平台和 Windows 平台的软件包。
  把rinetd.zip 下载到本地,解压出来。你只需取出其中的 rinetd.exe。
  编写配置文件
  rinetd 的配置文件很简单,就是一个普通的文本文件,每一行对应一条转发规则。每一条转发规则包含4个字段,分别如下,字段之间用空格分开。

绑定地址 监听端口 转发的地址 转发的端口

  配置文件举例
  举个例子:本地已经运行了 Tor,监听端口是 9150,绑定在 127.0.0.1
  如果希望通过 rinetd 建立一个新的端口,端口号是 12345,绑定在 0.0.0.0 上,那么,转发规则就这么写:

0.0.0.0 12345 127.0.0.1 9150

  运行

1. 把刚才写好的配置文件保存成 config.txt,把该文件跟 rinetd.exe 放到【同一个目录】。
2. 运行 cmd 进入 Windows 的命令行窗口(黑窗口)
3. 使用 cd 命令切换当前目录,使得“当前目录”是 rinetd.exe 所在的目录
4. 然后执行如下命令
rinetd.exe -c config.txt

  上述命令执行之后,命令行窗口的光标会停止不动。不要以为 rinetd 死了,其实它已经开始工作。为了保险起见,另外开一个 cmd 窗口,再用前面介绍的 netstat 命令,看一下本机开启的端口。如果正常的话,你就可以看到如下一行输出

TCP  0.0.0.0:12345  0.0.0.0:0  LISTENING

  优点

1. 该软件很小巧(整个下载包才 100 多 KB),而且是绿色软件。几乎不占用啥系统资源
2. 无需管理员即可运行
3. 跨平台

  缺点

1. 每次你关机或用户注销,rinetd 就退出了,下次要用还得重新运行(为了方便,你可以把 rinetd 的启动命令加入 Windows 的启动项)

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注