端口映射是连接私有网络与互联网的关键技术,它允许外部用户通过公网IP访问内网服务。如在外出差时,我们常常需要远程访问公司内部服务;而在公司,有时也希望能访问家里的特定设备。这时,端口映射功能就派上大用场了。

设置端口映射,简单来说就是将一台物理服务器上的端口关联到另一台服务器的端口,从而实现让后者访问前者的资源。要完成这一设置,需要依次在防火墙、路由器以及目标服务器应用程序上进行相应操作。同时面对无公网IP和无路由权限的网络环境,需要借助类似nat123端口映射工具方式来实现映射端口访问。

一、目标服务器应用程序设置(确保本地服务端口正常)在做映射端口访问前,首先就是明确自己本地应用场景,需要在目标服务器上的应用程序中进行相应设置,确保应用程序能够正确响应外部请求。

(一)以 Web 服务器为例(使用 Apache 服务器):1.配置 Apache 服务器:找到 Apache 服务器的配置文件,一般在/etc/apache2/目录下,文件名为apache2.conf或httpd.conf。使用文本编辑器打开该文件。

2.设置监听端口:在配置文件中找到Listen指令,默认情况下可能是Listen 80。如果在路由器上设置的外部端口不是 80,需要将此处的端口号修改为与外部端口一致,例如Listen 8080。

3.重启 Apache 服务器:保存配置文件后,在终端输入sudo systemctl restart apache2(Ubuntu 系统)或sudo service httpd restart(CentOS 系统),使配置生效。

(二)以 FTP 服务器为例(使用 VSFTPD 服务器):1.配置 VSFTPD 服务器:打开 VSFTPD 的配置文件,一般在/etc/vsftpd.conf。使用文本编辑器打开该文件。

2.设置端口号:找到listen_port选项,如果没有则添加,将其值设置为与路由器映射的端口号一致,例如listen_port=2121。

3.重启 VSFTPD 服务器:保存配置文件后,在终端输入sudo systemctl restart vsftpd(Ubuntu 系统)或sudo service vsftpd restart(CentOS 系统),使配置生效。

总之,明确本地端口应用场景,对应程序或服务或设备正常运行。

二、防火墙设置(确保本地服务端口允许被其他设备访问)防火墙在网络安全中起着关键作用,它控制着网络间的访问和数据传输。在设置端口映射时,首先要让防火墙允许指定端口的映射,以便其他设备能够访问服务器上的资源。

(一)Windows 防火墙设置:1.打开防火墙设置:通过 Windows 搜索栏输入 “控制面板”,打开控制面板窗口。在控制面板中,找到 “系统和安全” 选项,点击进入后选择 “Windows Defender 防火墙”。也可以直接在搜索栏中输入 “Windows Defender 防火墙”,快速找到并打开。

2.进入高级设置:在 Windows Defender 防火墙界面左侧,点击 “高级设置”,进入高级安全 Windows Defender 防火墙窗口。这里可以对防火墙的各种规则进行详细配置。

3.新建入站规则:在高级安全 Windows Defender 防火墙窗口中,点击左侧的 “入站规则”,然后在右侧点击 “新建规则”。在弹出的新建入站规则向导中,选择 “端口” 选项,点击 “下一步”。

4.配置端口设置:在 “协议和端口” 页面,选择 “TCP” 或 “UDP” 协议,根据要映射的服务来确定。如果是 Web 服务,通常选择 TCP 协议。然后选择 “特定本地端口”,并输入要映射的端口号,比如常见的 Web 服务端口 80 或 443。点击 “下一步”。

5.设置操作和作用域:在 “操作” 页面,选择 “允许连接”,这样外部设备才能通过该端口访问服务器。在 “作用域” 页面,可以设置允许访问的源 IP 地址范围,如果不确定,可以留空表示允许所有来源。点击 “下一步”。

6.配置配置文件和名称:在 “配置文件” 页面,选择该规则适用的网络环境,如域、专用、公用等,一般全选即可。最后,在 “名称” 页面,输入一个便于识别的规则名称,如 “Web 服务端口映射”,点击 “完成”。

(二)Linux 防火墙设置(以 Ubuntu 为例,使用 UFW 防火墙):1.安装 UFW 防火墙(如果未安装):打开终端,输入命令sudo apt-get install ufw,按照提示完成安装。

2.启用 UFW 防火墙:在终端输入sudo ufw enable,启用防火墙。

3.允许端口映射:输入命令sudo ufw allow <端口号>/<协议>,例如要允许 TCP 协议的 80 端口映射,输入sudo ufw allow 80/tcp。如果要允许 UDP 协议的某个端口,将命令中的协议和端口号替换即可。

不管是win还是Linux或其他环境,在服务器本地开放防火墙后,建议同时在局域网内其他电脑上进行连接访问测试,确认正常访问到。

三、路由器设置映射端口(有公网IP直接让公网访问)内部上网设备都是经过路由联网的,当我们有路由权限且路由本身有公网IP获取到时,需要在路由器上进行端口映射配置,让路由器将接收到的请求转发到目标服务器。

(一)登录路由器管理界面:1.确定路由器 IP 地址:打开命令提示符(Windows)或终端(Linux、Mac),输入ipconfig(Windows)或ifconfig(Linux、Mac)命令,查看本地连接的详细信息,找到 “默认网关”,这就是路由器的 IP 地址,常见的如 192.168.1.1 或 192.168.0.1。

2.打开浏览器登录:在浏览器地址栏输入路由器 IP 地址,按下回车键,在弹出的登录界面输入路由器的用户名和密码。如果没有修改过,大部分路由器的默认用户名和密码为 admin。

(二)设置端口映射:1.找到端口映射选项:不同品牌和型号的路由器,其端口映射设置位置和名称可能不同。一般在 “高级设置”“转发规则”“虚拟服务器” 等菜单中。例如,TP - LINK 路由器在 “转发规则” 中的 “虚拟服务器” 选项;小米路由器在 “高级设置” 中的 “端口转发” 选项。

2.配置映射参数:进入端口映射设置页面后,填写以下信息:

-服务名称:自定义一个名称,方便识别,如 “Web 服务器端口映射”。

-内部 IP 地址:填写目标服务器的内网 IP 地址,确保目标服务器与路由器在同一局域网内。

-内部端口:填写目标服务器上运行服务的端口号,如 Web 服务的 80 端口。

-外部端口:可以与内部端口相同,也可以根据需要设置不同的端口号,这是外网访问路由器时使用的端口。

-协议类型:选择与服务对应的协议,如 TCP 或 UDP。

3.保存设置:填写完所有参数后,点击 “保存”“应用” 或 “确定” 按钮,使端口映射设置生效。

(三)验证端口映射:1.使用端口扫描工具:可以使用在线端口扫描工具,如 “站长工具” 中的端口扫描功能,输入路由器的公网 IP 地址和设置的外部端口号,进行端口扫描。如果端口扫描结果显示端口处于开放状态,说明端口映射设置成功。也可以使用专业的端口扫描软件,如 Nmap,在命令行中输入nmap -p <外部端口号> <公网IP地址>进行扫描。

2.实际访问目标服务器:在另一台处于外网的设备上,通过浏览器或相应的客户端软件,输入路由器的公网 IP 地址和设置的外部端口号,尝试访问目标服务器上的服务。例如,如果是映射 Web 服务器端口,在浏览器中输入公网 IP 和端口号后,应该能够看到 Web 页面;如果是映射 FTP 服务器端口,使用 FTP 客户端软件输入公网 IP 和端口号,应该能够连接到 FTP 服务器并进行文件传输等操作。

(四)端口映射不成功,如何解决?1、 确认访问方式无误

访问方式不正确,或者输入的地址和端口号有误,都可能导致端口映射失败。访问服务器的方式需依据实际应用来确定,通常情况下,外网访问方式与内网是一致的。在通过外网访问服务器时,要确保在浏览器或客户端软件中正确填写了 IP 地址和端口号。

2 、检查服务器设置

服务器网络参数设置错误是导致端口映射不成功的常见原因之一。具体排查步骤如下:

内网无法访问:若在内网都无法访问服务器,很可能是服务器本身未搭建好,需重点排查服务器相关问题。

内网可访问,外网不行:如果内网访问正常,但外网无法访问,就要确认服务器能否与外网正常通信,并且是否允许被远程访问。

关闭防火墙和杀毒软件:有时,防火墙或杀毒软件可能会阻止端口映射的正常进行,不妨暂时关闭它们,再尝试进行端口映射。

3、 检查路由器设置

在路由器设置中,要确保内部端口是服务器的真实端口,IP 地址是服务器的实际 IP 地址,并且该映射功能已启用。

4 、确认 WAN 口 IP 地址为公网 IP

只有 WAN 口 IP 地址是公网 IP 地址,才能实现端口映射到公网。你可以让局域网内的电脑访问 http://ip138.com,查看显示的 IP 地址是否与路由器 WAN 口 IP 地址一致。若不一致,建议联系宽带服务商解决。

5 、避免远程管理导致端口冲突

如果路由器开启了远程管理功能,可能会出现 WEB 管理端口号和虚拟服务器端口冲突的情况(例如 Magic 系列路由器默认端口为 8080、8443、2323),这会导致虚拟服务器功能无法正常工作。若需要开启远程管理,在配置虚拟服务器时,外部端口应避开这些冲突端口。

6 、检查上网控制设置

若路由器开启了上网控制功能,且不允许服务器上网,也会导致端口映射失败。你可以检查上网管理、家长控制等设置中,是否有针对服务器 MAC 地址的限制。

7 、排查服务商屏蔽端口情况

部分宽带运营商可能会屏蔽 80 等常用服务端口,从而导致端口映射不成功。此时,你可以将服务端口(外部端口)修改为运营商未屏蔽的端口,建议选择 9000 以上的端口。修改后,外网用户需使用新的外部端口访问服务器。此外,还可以使用 telnet 命令检测该端口是否通畅。

(五)动态域名解析:当路由公网IP变化不固定时,可以同时用动态域名解析服务来解决。

方法1:在路由管理后台配置使用DDNS服务实现,注册对应DDNS服务商帐号、登录、启动等操作,最后用对应提供的随机多级域名来代替IP访问即可。

方法2:本地计算机使用nat123客户端或类似支持动态域名服务的软件,添加个动态域名解析记录,绑定自己域名或默认提供的自定义二级域名。

四、端口映射工具(无公网IP用软件方案提供互联网服务)内网穿透技术应用,在通过端口映射软件工具为载体下,可以直接将本地内网IP端口转换成公网地址端口,从而实现外地对内网服务的连接访问。常见的开源工具有如ngrok和frp等,常见的界面化简单操作的工具有如nat123和快解析等。

(一)使用ngrok生成公网地址访问:在ngrok中,你可以通过创建一个隧道(tunnel)来访问你的本地开发服务器。ngrok是一个反向代理工具,它可以将你本地运行的Web服务暴露给公网,这对于开发、测试和演示非常有用。下面是如何使用ngrok来访问你的本地开发服务器的步骤:

1. 安装ngrok

首先,你需要在你的机器上安装ngrok。你可以通过npm(如果你已经安装了Node.js)或从官网下载安装包。

通过npm安装:

npm install -g ngrok

从官网下载:

访问ngrok官网下载适合你操作系统的版本。

2. 注册并获取Auth Token

在使用ngrok之前,你需要注册一个账户并获取一个Auth Token。这是为了安全起见,避免未授权的使用。

访问ngrok官网。

注册一个账户并登录。

在你的账户页面找到Auth Token,并复制它。

3. 配置ngrok

在命令行中,使用你的Auth Token来启动ngrok。你可以通过设置环境变量NGROK_AUTH_TOKEN来自动加载Token。

设置环境变量(Windows):

set NGROK_AUTH_TOKEN=你的AuthToken

设置环境变量(macOS/Linux):

export NGROK_AUTH_TOKEN=你的AuthToken

4. 启动ngrok隧道

现在,你可以启动一个隧道来访问你的本地服务器。例如,如果你的本地开发服务器运行在localhost的3000端口,你可以这样启动隧道:

ngrok http 3000

5. 获取公网地址

启动隧道后,ngrok会在命令行中显示一个公网URL。这个URL可以被任何人访问,就像访问你的本地服务器一样。例如:

Forwarding https://abc123.ngrok.io -> http://localhost:3000

你可以将这个URL分享给任何人,他们就可以通过这个URL访问你的本地开发服务器了。

6. 使用隧道进行开发测试

现在,你可以使用这个公网URL来测试你的应用程序,就像它在互联网上运行一样。这对于与团队成员共享工作、进行远程演示或进行用户测试非常有用。

(二)使用nat123端口映射自定义域名端口访问:nat123是个非常老牌内网穿透技术应用服务平台,界面化操作简单且能完全自定义域名端口等丰富功能,设置nat123将内网服务映射到公网可通过以下步骤实现:

1、下载并安装客户端‌

在目标内网计算机上访问nat123官网下载对应系统版本的客户端,完成安装。Windows版本建议安装至非系统盘(如D盘)以避免权限问题。

2、 ‌注册账号并登录‌

首次使用需注册账号,已有账号直接登录客户端。注意需要区分不同应用在不同网络环境下使用独立不同账号。

3、 ‌添加端口映射规则‌

登录nat123客户端后“添加映射”对应点击,出来新的编辑映射界面:

映射类型选择‌:根据应用场景选择类型(如80HTTP、443HTTPS、非80网站、全端口映射等)。

内网地址/端口‌:填写内网服务器的IP和端口(本机可用127.0.0.1),以本地实际填写。

外网域名‌:使用自动生成的二级域名(可自定义对应二级字符方便 记住使用)或绑定自定义域名。

外网端口:当选择非80类型时,会自动生成一个外网用端口号,一般不用改,也可以修改其他未占用的。

4、保存并生效‌

保存映射规则后,外网用户即可通过自定义的域名端口这个公网地址进行访问内网服务。若为全端口映射,访问时需在外网访问端同时使用nat123访问者添加对应端口后访问。

5、‌注意事项‌

确保内网服务已启动并监听指定端口。

检查防火墙是否放行映射端口(如Windows需配置入站规则)。

若内网服务为网站,需提前部署好Web服务(如IIS)并测试内网访问正常。

通过以上步骤,就可以完成端口映射的设置,实现一台服务器上的资源被另一台服务器访问。在操作过程中,要仔细核对各项设置参数,确保设置正确无误。