家宽即家庭宽带,此篇讨论当家庭宽带获取到公网IP时应如何设置使用,以让用户从公网环境连接至你的部署服务。本文以玩家连接Minecraft服务器为例进行说明。
目录
前言
-
家宽获取到的公网IP均在家庭网络环境中的最上层NAT设备,即拨号设备。哪个路由设备负责拨号。即哪个路由设备拥有公网IP。
一般情况下光猫负责拨号,而路由器为IP自动获取。这种情况下光猫拥有公网IP。如果路由器后台设置为PPPoE拨号,则路由器拥有公网IP,光猫仅负责光电信号转换。请注意,在下述对”路由设备“的表述中,均代指已获取公网IP的路由设备。
-
使用家宽公网IP直连速度快,且不产生其他额外费用。但请注意安全性问题。当家宽被DDoS时,需尽快手动重启路由设备更换IP并断开DDNS服务。避免被网络提供商发现异常导致断开网络,甚至造成公网IP收回的惨重结果。
-
家宽IP的使用应当谨慎。大量的上传和跨省流量可能被网络提供商怀疑跑PCDN服务,导致降速或公网IP被收回。尽可能不要使用家宽IP跑敏感服务,如FRP服务或WEB服务。
-
家宽公网IP一般情况下无法使用443,80端口。此端口通常用于WEB服务。同上,所以即使可以使用也应避免使用
-
家宽IP线路少,并非BGP网络,其他地区其他网络提供商的玩家在跨省流量结算时使用家宽IP连接服务器时,会导致高延迟。可使用FRP缓解该情况。
-
无论你使用下述任何方法,均可使用该在线工具测试连通性 itdog
对公网开放
以下讨论两种使用家宽公网IP对公网暴露内网服务的方法:
DMZ vs. 端口映射
| DMZ | 端口映射 | |
|---|---|---|
| 效果 | 将内网内一台主机(一个内网IP)的端口全部暴露给互联网。 | 将内网内某一内网IP的某一端口暴露给互联网。 |
| 功能 | 仅支持一台主机(一个内网IP)向外提供服务 | 支持多台主机(多个内网IP)向外提供服务。(“多台"取决于路由设备支持的最大端口映射规则数量) |
| 安全性 | 安全性低,该主机的全部端口暴露在互联网。需要在主机或路由器侧添加防火墙规则以防护 | 安全性高,仅暴露某一内网IP指定的端口。 |
| 适用性 | 适用性强,路由设备基本均支持DMZ功能 | 适用性一般,老旧路由设备可能对端口映射的支持不佳导致无法连通 |
固定IPv4内网地址(必要准备)
主机重启时,路由设备DHCP服务将重新分配新的主机号至主机,导致原先设置的DMZ内网地址失效。在开启DMZ功能前,需手动设置IPv4地址为静态地址。保证其每次开关机均为同一内网IP。
推荐将内网IP的主机号部分绑定至高位,例如192.168.1.220。主机号(通常情况下即为最后的数字)推荐大于100且小于254。否则家中的其他联网设备有概率占用低位主机号地址导致主机无法使用该内网IP。
若主机号设置低位号,例如192,168.1.8。可能一开始即被其他设备占用导致设置失败。即使设置成功,在服务器重启时若家庭中其他设备连网占用该地址,则会导致主机静态地址失效,将无法联网,不利于远程维护。
DMZ
- 作用
在路由设备(路由器或光猫)已获取到公网IP的前提下,将内网中的一台主机暴露给互联网,以便运行一些需要被公网广泛访问的服务。
- DMZ功能
可将一台处于内网地址内的主机端口全部映射到公网环境中。
- 使用
- 确保主机与路由设备处于同一局域网(通过Wi-Fi或有线连接)。
- 登录路由设备的后台管理界面(管理地址通常标注于路由器机身标签)。
- 找到“DMZ主机”或“隔离区”功能设置项。
- 填写您要设置的主机的静态内网IP地址(例如
192.168.1.220)。 - 启用该功能并保存设置。
设置完成后若无法生效,应检查主机防火墙或DMZ设置。或检查路由设备防火墙规则。路由设备防火墙在万不得已的前提下,最好不要关闭。
- 注意事项
-
DMZ功能相较于端口映射,使用更为方便。特别是在端口映射普遍有数量限制或甚至无法生效的路由设备上,DMZ功能适用范围更广。
-
但是,由于DMZ功能将主机的全部端口都暴露在了公网环境中,安全性不如端口映射。可打开主机的防火墙,仅开启对外提供服务的端口,关闭不提供服务或敏感服务的端口。
-
绝大多数家用路由器同一时间只能设置一台DMZ主机。如需将不同服务暴露于多台主机,必须使用端口映射功能。
端口映射
- 作用
在路由设备(路由器或光猫)已获取到公网IP的前提下,将内网中的某一内网IP的某一端口暴露给互联网,以便运行一些需要被公网广泛访问的服务。
如果家中部署多台主机且均需对外提供服务,选择端口映射是不错的选择。如果家中仅部署一台主机,且在主机上部署了非常密集的服务,需要同时用到多个端口号(数量远超路由器端口映射规则最大数量),请选择DMZ功能。
如果有更为复杂的业务需求,如多台主机均需暴露大量端口号。则不在本教程的范畴内。可自行学习交换机的使用以解决该需求。
- 使用
- 确保主机与路由设备处于同一局域网(通过Wi-Fi或有线连接)。
- 登录路由设备的后台管理界面(管理地址通常标注于路由器机身标签)。
- 找到“端口映射”“虚拟服务器”“NAT转发”等功能设置项。
- 填写您要设置的主机的静态内网IP地址和服务端口号(例如
192.168.1.220:25565,192.168.1.220:25566192.168.1.200:25565等,可填写多条,最大规则数量取决于路由设备的支持量)。 - 启用该功能并保存设置。
部分老旧光猫或路由器对端口映射的支持不佳。设置完之后可能无法连通。可使用适用范围更广的DMZ功能代替。
DDNS(IPv4,IPv6)
除非花钱购买专线,否则绝大部分家庭宽带申请到的公网IP均为动态IP,即当每次路由设备重播或重启时,公网IP有极大概率发生变化。公网IP发生变化后,先前的公网IP将失效。服主需要查询新的IP,再将新IP给到玩家以进入服务器。此类操作繁杂且发生时间不可测。
作用
DDNS可以每隔一段时间向上游查询最新的IP,并将其绑定到域名上。玩家可使用域名进入服务器。无需担心IP变化导致无法进入服务器,另外一个意向不到的好处是,使用域名进入Minecraft服务器的速度将更快
域名获取
- 在各大云服务厂商购买域名
- 部分路由器可提供免费的二级域名,具体可查询路由器后台设置部分
- 在网络上查询免费的二级域名提供商,获取免费二级域名
使用
在github上使用 DDNS-GO 开源项目,并按照其说明进行部署即可。
IPv6
IPv6是IPv4的升级,是新一代IP协议。原则上IPv6网络地址资源充足,不存在NAT,其地址即为公网IP。但实际网络环境中,现多有不支持IPv6,或IPv6为内网的情况。且IPv6公网地址服务器要求玩家客户端侧也需持有IPv6公网地址,才可连通。
查询是否拥有IPv6公网地址
使用 检测网站 进行检测。若显示不支持,可尝试去路由设备后台开启IPv6功能。若开启后仍然不支持,请询问自己的网络提供商获取或放弃该方式。
内网IPv6通常为fe80开头,若显示为内网IPv6地址。则无法连接。
注意事项
- IPv6连接服务器需要服务器和玩家客户端网络环境均持有IPv6公网地址
- Java版服务器对IPv6连接支持体验不佳,而基岩版服务器的支持更好
- IPv6地址外接端口与IPv4的表示方式略有不同,需将地址部分用方括号[]包裹起来,端口号紧随其后。例如:
[2001:db8:85a3::8a2e:370:7334]:25566(假设25566端口为Minecraft服务器端口) - IPv6公网设置成功后,需要放行主机侧的防火墙服务端口。