目 录
[一、端口映射(Port Mapping)](#一、端口映射(Port Mapping))
一、端口映射(Port Mapping)
端口映射是将外网主机的IP地址的一个端口映射到内网中,一台机器提供相应的服务。当用户访问该IP的这个端口时,服务器会自动将请求映射到对应局域网内部的机器上。
端口映射过程就如同:你的办公室在一个商务楼15楼2810室,你有快递要通过快递公司寄出去, 你写好邮寄地址,放到门卫,门卫那边的快递公司就给你寄出去了;当有你的快递运送到商务楼,门卫收到后,知道你公司在2810室,然后就直接送到你的办公室。端口映射的目的是传输数据,数据如何进来,又如何发出去,通过端口映射可以达到和公网上的网络设备通信的目的。
二、端口映射应用场景(什么时候用到端口映射)
(一)、使用端口映射的条件
满足以下几个条件,就可以在公网下访问映射的端口,来访问内网的服务。
1、实现端口映射需要确保拥有公网IP,
2、确认需要映射的端口,并确保内部主机的防火墙允许外部访问该端口。
3、在路由器上配置端口映射规则
(二)使用端口映射的具体场景
端口映射通常在以下情况下使用:
- 当有远程控制的需求时,比如实际中有远程控制的需求。这个时候我们就需要端口映射这样的操作,用来把目的端口是"指定端口号"的数据包和"指定的主机端口号"联系起来以方便远程控制。
- 当公网用户无法直接访问到内网服务时,需要借助一定的技术,而端口映射就是其中一种。当一个私有网络中的计算机需要提供服务给公共网络上的计算机时,则需要使用端口映射技术将公共网络上的请求转发到私有网络中的特定计算机和端口,以便与该计算机上的程序进行通信。
三、端口映射技术的特点
端口映射技术具有以下特点:
- 地址转换:端口映射技术可以将内部网络地址转换为外部网络地址,使得内部网络中的设备能够通过外部网络进行访问。
- 动态端口映射:通过动态端口映射,内部网络中的设备可以在需要时动态地映射到外部网络中,使得外部网络用户可以随时访问这些设备。
- 端口转发:端口映射技术可以将外部网络中的流量转发到内部网络中的目标设备,使得外部网络用户可以访问内部网络中的特定服务。
- 安全性:端口映射技术可以通过设置防火墙规则来限制外部网络的访问权限,保护内部网络的安全。
- 易于配置和管理:端口映射技术可以通过简单的配置来实现,不需要复杂的网络配置和管理技能。
端口映射技术是一种非常有用的网络技术,可以帮助用户实现内部网络设备的外部访问和管理,提高网络的可用性和可管理性。
四、哪些设备支持端口映射
许多设备支持端口映射功能,包括路由器、防火墙、虚拟专用网络(VPN)等。不同的设备和品牌可能具有不同的端口映射设置界面和配置方式,但大多数设备都支持基本的端口映射功能。
例如,常见的路由器品牌如华硕、网件、Linksys等都支持端口映射功能。在路由器的设置界面中,通常可以找到"转发规则"、"虚拟服务器"或类似选项,在其中可以设置端口映射规则。
另外,一些云服务提供商也提供端口映射功能,如Amazon EC2、Microsoft Azure、阿里云等。在这些平台上,用户可以在虚拟机或容器中配置端口映射规则,以便将外部请求转发到内部服务。
需要注意的是,在进行端口映射时,需要确保设备的安全性,尤其是在公网环境下。建议在设备上配置强密码、禁用不必要的服务等安全措施,以防止潜在的安全风险。
五、如何测试端口映射是否成功了?
要测试端口映射是否成功,可以使用以下几种方法:
- 使用telnet命令:在远程计算机上,打开命令行界面,输入"telnet (路由器WAN口IP) (端口号)",例如"telnet 124.90.173.12 80"。如果端口映射成功,应该能够连接成功,并显示正常的数据传输。如果连接失败或无法打开到主机的连接,说明端口映射没有成功。
- 使用netstat命令:在本地计算机上,打开命令行界面,输入"netstat -an | grep "端口号"",例如"netstat -an | grep "8080""。如果端口映射成功,应该能够显示出相应的连接状态和地址信息。如果找不到对应的端口号或显示的状态为"CLOSE",说明端口映射没有成功。
- 使用端口扫描工具:有许多在线的端口扫描工具可供使用,可以用来测试指定的端口是否开放。常见的工具包括nmap、Advanced Port Scanner等。只需要输入要扫描的IP地址和端口号,工具会自动检测该端口是否开放。
注意,在进行端口映射测试时,需要确保本地计算机和远程计算机的网络连接正常,并且测试的端口没有被防火墙或其他安全措施阻塞。另外,不同的操作系统和网络环境可能存在差异,测试方法也可能有所不同。
大家可以看我前面的一篇文章" 详细介绍解决网络端口问题的方法,如何检测网络端口的通断,测试服务器的TCP端口或UDP端口是否联通?",有详细的介绍
六、配置实战:
(一)通用路由器的端口映射配置(思科路由器,物联网服务器)
1、需求
内网是通过一个Cisco的路由器2611连接都互联网,现在内网有个物联网服务器172.1.1.22,要采集4G设备上的数据。所以这些4G设备需要能够访问172.1.1.22服务器。
2、配置
在Cisco的路由器2611上进行端口映射,具体操作如下:
c2611>en
Password:
c2611#configure
c2611(config)#ip nat inside source static tcp 172.1.1.22 236 121.22.1.101 236
(*备注:*172.1.1.22 是内网主机的地址, 121.22.1.101 是公网 IP 地址,这里以映射 236 端口为例 )
c2611(config)#exit
c2611#wr
3、删除配置
取消端口映射:no ip nat inside source static 172.1.1.22 236 121.22.1.101 236
(二)宽带路由器的端口映射配置(视频监控平台对外提供服务)
1、需求
公司内网一个服务器,地址为192.168.1.191,现在需要对外临时提供视频接入服务。能够接入一些监控摄像机IPC、硬盘录像机NVR等。
因此,需要配置端口映射,让视频监控平台的服务端口7060映射到外网,以便可以接入这些视频监控设备。
2、配置
公司的路由器为TPLINK的TL-R478,下面以这个路由器为例,配置如下:
(1)进入路由器配置界面,选择"转发规则",选择"虚拟服务器"tab,进入下面界面
(2)配置端口和内网视频监控平台的IP地址,协议可以选择TCP、UDP、或TCP/UDP
(3)配置完成后,点击"新增",可以看到服务列表中出现新增的项目,如下图:
3、测试配置是否生效
(1)查看宽带路由器wan口的IP地址,即公网地址
选择"wan设置",点击"wan1设置"tab页,如下图,可以找到公网地址为117.80.183.126
(2)测试公网地址和端口
telnet到公网地址的7060端口,看是否能登录上去
输入指令 telnet 117.80.183.126 7060
若出现上图,telnet 到7080端口,显示"连接失败",说明映射7080端口不成功。
出现如下图显示,说明端口7060映射成功。
七、常见问题回答:
(一)没有固定的IP地址,可以做端口映射吗?
没有固定IP地址也可以进行端口映射,但需要在路由器或服务器上设置动态DNS(DDNS)服务。动态DNS服务可以将动态分配的IP地址映射到一个固定的域名,这样就可以通过域名进行远程访问和管理了。常用的动态DNS服务提供商有DynDNS、No-IP、花生壳等,可以按照相应服务提供商的说明进行设置。此外,也可以考虑使用云服务或虚拟专用服务器(VPS)等云端解决方案,它们通常提供了内置的端口映射功能,方便用户进行远程访问和管理。
(二)没有公网地址,有域名,可以做端口映射吗?
没有公网IP地址,只拥有域名是无法进行端口映射的。端口映射的前提是需要有公网IP地址,以便将外部网络的请求转发到内部网络中的服务器或计算机。如果只有域名而没有公网IP地址,则无法进行端口映射操作。
不过,可以通过内网穿透的方式来实现公网访问内网的需求。内网穿透工具如cpolar可以将内网下的本地服务器安全暴露至公网可访问,无需配置路由器,也无需公网IP。只需要在内网服务器上安装cpolar,并创建隧道将内网端口映射到公网,就可以实现公网访问内网的需求。
(三)常见故障
- 端口已被占用:在进行端口映射时,可能会遇到端口已被其他应用程序或服务占用的情况。这可以通过关闭占用端口的其他应用程序或服务来解决,或者选择其他未被占用的端口进行映射。
- 端口冲突:如果映射的端口与其他设备或应用程序的端口发生冲突,可能会导致映射无法正常工作。需要修改映射端口,确保端口的唯一性。
- 防火墙或安全软件阻止访问:防火墙或安全软件可能会阻止对端口的访问。需要检查防火墙或安全软件的设置,确保允许对指定端口的访问。
- 网络环境变更导致映射失效:如果网络中的IP地址发生变化,可能会导致端口映射失效。需要检查内外网IP地址是否发生变化,并根据实际情况更新配置。
- 宽带运营商采用NAT技术:某些宽带运营商可能会使用NAT技术,这可能会对端口映射造成一定影响。需要与运营商联系,了解其网络配置,并根据情况进行相应设置。
- 路由器或防火墙配置错误:在进行端口映射时,如果路由器或防火墙的配置出现错误,可能会导致端口映射无法正常工作。需要检查路由器或防火墙的配置,确保设置正确。
- 无法提供服务:在进行端口映射时,如果内网中的服务没有正常工作,可能会导致端口映射无法提供服务。需要检查内网中的服务状态,确保服务正常运行。