Some network knowledge (in Chinese)
光纤入户
光纤 - 光猫 - 网线 - 路由器 - 网络设备
连接到光纤线的设备就是光猫。路由器是自己买的设备,一般有一个 WAN 口,数个 LAN 口,一般应使用 WAN 口连接光猫。
光猫原本只是一个光电信号转换器,不需要多少性能。现在光猫大多附带了路由和 WiFi 功能,拨号设置好后就可以上网了。运营商免费租用给用户的光猫显然要求成本尽可能的低,启用路由和无线功能之后,光猫负荷较大。虽然短时间工作或者数据吞吐量比较小的时候,光猫还能够应付,一旦长时间连续工作、带机数量比较多、或者进行大数据量下载传输操作的时候,就有可能出现网速不稳定、带宽不达标、网络延迟升高、丢包率高等现象。
一般带路由功能的光猫只有两根天线,连接设备数有限制且容易掉线,WiFi 信号覆盖范围小,固件功能缺失,缺少常用的管理功能。解决方法就是外接路由器进行扩展,关闭光猫自带的路由功能,上网直接连接外接的路由器,减轻光猫负担。通常会让配置比较好的一方来路由,比如光猫配置比路由器好,就让光猫拨号,如果光猫配置很烂,就把光猫设置成桥接,然后用路由器拨号。比如移动宽带默认是移动光猫拨号,使用的路由模式。将光猫改为桥接模式,让光猫只做光转换,其他的事情交给路由器来做。如果家里的宽带是 100 兆及以下,选择端口百兆的路由器就够用了,如果宽带升级到 200 兆以上,要选择千兆的路由器。
光猫桥接,关闭光猫原有 WiFi 功能,使用自己的路由器进行拨号。如果网络需求不高,可以不关闭光猫的路由功能,保持光猫拨号,这是绝大部分人的做法。因为光猫桥接并不好做,需要运营商的配合,还要有一定的动手能力。光猫桥接后,必须记住的就是自己的宽带账号和密码,以后更换路由器,都需要手工输入这个账号和密码,让路由器进行拨号。
和路由器相关的有3个密码
- wifi 密码(可以连上路由器)
- 购买宽带服务,运营商提供的拨号密码
- 设置路由器的管理密码
智能家居
大部分的智能家居设备都只支持 2.4G 的无线网络。2.4G 无线的覆盖范围更大,随距离衰减小,对于智能家居设备来说,连接到网络就可以,对于网络速度要求不高,对延迟等要求也不高。
5G 通信和 5Ghz WiFi 不是一回事,5G 通信是 5th Generation mobile networks,第五代移动网络的简称,是指蜂窝移动通信技术(户外移动通信)。而 5G 无线网络指的是 WiFi 标准中的 5GHz,是指采用了 5GHz 频段传输数据的 WiFi 信号(室内无线终端上网)。同时支持 2.4 GHz 和 5GHz 的宽带路由器称为双频无线路由器。
将路由器的无线信号,改为 2.4G 和 5G 的分离信号,不要使用融合信号。比如一个名字是 ABC,一个是 ABC_5G,其中 ABC 是 2.4G 无线。ABC_2.4G 给智能设备使用(可以设置一个独立的密码),让这些设备连接 2.4G 的无线,用来获得更大的覆盖距离。而 ABC_5G 给手机电脑使用,可以获得更好的无线速度,更低的延迟。
APP 管理智能设备,只需要 APP 的手机可以联网,智能设备联网即可。当智能家居设备用 2.4G 频段,而手机电脑平板用 5G 频段时,它们依然在同一个路由器下,处在同一网段,完全可以直接设置,不需要切换到 2.4G 频段去设置。
在移动光猫的设置里,开启 2.4G 的无线网络叫做 “SSID 使能”(应该是 enable 翻译过来的),SSID 名称就是你给自己无线网络所取的名字。开启 SSID 后会在无线列表中看到路由器设置的无线名称,关闭后则看不到。
网络速度是带宽和延迟共同的结果
- 延迟 Latency:数据请求到达服务器,然后数据返回给你所需的时间(比如打开网页的速度),可以使用 ping 命令测量,如果 ping 某个网站,大于 50ms,打开就慢,10-30ms 打开就比较快。延迟高低是由多个因素决定的,网络上的每一个服务器/路由器都是一个节点,所有的节点加在一起的响应速度才是自己的网络延迟,如果某一中间节点出现出题,无法提供服务,其它节点就会重新计算路由,还有 DNS 服务器的影响等等。
- 带宽 Bandwidth:10M 变为 20M,提高的是带宽,并不能改变延迟。打开网页可能只占 1% 的带宽,此时延迟起主要作用。但如果是下载大文件可能几乎占满带宽,此时带宽为主要因素。我们一般说的网速都是指带宽。
运营商在宽带办理中宣传的百兆带宽 100M 是指 100 Mbps,而 100M/s 下载速度里的 M 是 MBps。另外,如果你的路由器是百兆端口,那么这个路由器的最大网速就是 100 Mbps,也就是有线网口允许最大接入的带宽是 100M,此时无线能达到千兆也是没有意义的。如果你的路由器端口是千兆端口,那问题可能出在光猫上,你的光猫端口是百兆端口。
DHCP 失败与 169.254 地址
从技术角度看,169.254 地址的核心故障点很明确:DHCP 获取失败。169.254.x.x
是一个特殊的自动私有 IP 地址(APIPA),由操作系统在无法通过 DHCP 自动获取有效 IP 地址时自动分配。它的核心作用是让同一局域网内的设备在 DHCP 失败时仍能通过此地址进行基础通信(如文件共享、打印机访问),但无法连接互联网。
- 无默认网关:
169.254.x.x
地址不会分配网关,导致数据包无法路由到外部网络。 - 无有效 DNS: 即使手动配置 DNS,由于网关缺失,DNS 请求也无法发送到路由器或公共 DNS 服务器。
手动设置 IP 地址是一个有效的应急上网的方法,可以绕过 DHCP 获取失败的问题。但手动设置后虽然能上网,但 DHCP 失败的根本原因(如路由器问题、电脑驱动/服务问题)依然存在。在根本问题修复后改回自动获取 IP 和 DNS。
使用下面的 IP 地址
IP 地址: 192.168.1.100
子网掩码: 255.255.255.0
默认网关: 192.168.1.1
使用下面的 DNS 服务器地址
首选 DNS: 192.168.1.1 或 8.8.8.8
备用 DNS: 8.8.4.4 或 114.114.114.114
如果 IP/网关填错,即使 DNS 正确也完全无法上网。如果 IP 正确但 DNS 错误,能登录微信/QQ,但打不开网页,此时需检查 DNS 设置。
手动设置 DNS 时,如果网关设置正确,可填路由器的 IP(如 192.168.1.1
),路由器会自动转发 DNS 请求。或直接填公共 DNS(如 8.8.8.8
或 114.114.114.114
)。
为什么上不去 Google
GFW 实现网络封锁的手段主要包括 dns 劫持和 ip 封锁。IP 是网络上各主机的地址,dns 将域名和 IP 关联起来,形成映射。而 GFW 所做的就是站在用户和 dns 服务器之间,破坏它们的正常通讯,并向用户回传一个假 ip,也就访问不到本想访问的网站了。dns 劫持是 GFW 早期的技术手段,用户通过修改 Hosts 文件就可以突破封锁。dns 劫持之后,GFW 引入了 IP 封锁,直接锁住了访问目标网站的去路,用户发往被封锁 IP 的任何数据都会被墙截断。这个时候只能依靠在第三方架设服务器,代理与目标服务器间的来往,目前几乎所有的过墙手段都是基于这个原理。
假设我们有一台国外 A 中转服务器,可以通过 SSH 被国内 B 机器连接,那么理论上,A 能做的事情,B 也能做到,因为有一条网络通路,即所谓的隧道技术。用户和境外服务器基于 SSH 建立起一条加密的通道,SSH 客户端侦听本地的端口并转发请求到服务端处理,通过 SSH Server 向真实的服务发起请求,服务最后通过创建好的隧道返回给用户。由于 SSH 本身基于 RSA 加密,所以 GFW 无法从数据传输过程中的加密数据内容进行关键词分析,请求被放行。但由于创建隧道和数据传输的过程中,VPN 代理的特征是明显的或者说过墙的数据都遵循特定的套路(先发送一个建立加密通道的数据包,然后紧跟着一个代理请求),所以 GFW 一度通过分析连接的特征进行干扰,导致 SSH 存在被定向进行干扰的问题。
Shadowsocks 的出现是一个拐点,它把代理服务器拆分成 server 端和 client 端,经过 GFW 的流量全部加密,从而消除明显的流量特征。在服务器端部署完成后,按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地 Socks5 代理。浏览网络时,网络流量会被分到本地 Socks5 代理,客户端将其在本地加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。ss-local 一般是本机或局域网的其他机器,不经过 GFW,所以不会被 GFW 通过特征分析进行干扰。ss-local 和 ss-server 两端通过多种加密方法进行通讯,经过 GFW 的时候是常规的 TCP 包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密。
SOCKS5 是一种通用的代理协议,应用程序主动将自己的网络请求通过 SOCKS5 转发给代理服务器,代理服务器再代你去访问目标地址,它不关心数据内容(协议、格式),只负责转发。Shadowsocks 本质就是在本地启动一个 SOCKS5 服务,浏览器通过 SOCKS5 转发数据,Shadowsocks 再加密后发往服务器。
收费的是什么?当使用 ss 代理访问网站的时候,请求会被转发到 Shadowsocks 服务端上,再由它请求我们的目标网站。其原理就是在国外的服务器上装了 Shadowsocks 的服务,再开出一些端口和密码供客户端连接,那么这些端口和密码可能是别人免费提供的,或者收费的,或者自己买 VPS 服务器搭建的。
- VPS (virtual private server),可以把它简单地理解为一台在远端的强劲电脑。当你租用了它以后,可以给它安装操作系统、软件,并通过一些工具连接和远程操控它(一键完成 VPS 裸机的代理程序安装),比如 Vultr、搬瓦工都是 VPS 服务器提供商。
- Shadowsocks 是一个 project,是一种传输协议(ShadowsocksR, V2Ray, Trojan 也都是协议),分为 client 端和 server 端,实现了两端之间的加密数据传输,它不是一个具体的软件或工具。
- 相比服务器端的安装需要配置和部署等,客户端的安装就简单许多,大多数用户只需要这一步。比如 ClashX,Trojan-QT5,TrojanX 均为 Mac 客户端,不同客户端主要是界面区别,选择一个使用即可。可以在订阅服务网站的帮助中心找到『Trojan 服务客户端设置教程索引』或者参考文档:https://github.com/Shadowsocks-Wiki/shadowsocks
- 浏览器、邮件、文件传输都是在应用层;Shadowsocks、V2Ray 等 Socks5 类型的代理工作在会话层与传输层之间的边界,所以可以代理应用层的数据;游戏数据是直接通过传输层协议 TCP 和 UDP 进行通讯的(直接使用底层 Socket 接口或者不支持代理),不经过会话层,所以正常情况下 Socks5 是不能代理游戏通讯数据的;PING、TRACE 这些 ICMP 指令都是在网络层,也不通过 Socks5 代理转发;而主流的 VPN 协议都是在数据链路层,近乎所有的流量都可以被 VPN 代理。它本质上创建一个虚拟网卡接口,将整个系统的网络栈流量都接入这个虚拟通道,再加密并转发。