英文wiki的内容是挺全的,可惜中文版似乎已经很久没更新了
部分内容指向英文版彗星论坛,不过英文论坛现在好像也无法访问了
磁盘提速服务问题
问:磁盘提速服务出现 未安装\拒绝访问\其他错误 该怎么办?
答:磁盘提速服务有异常,可以通过重新安装服务来解决
通常在彗星启动的时候会检查提速服务状态,若有异常会弹出通知提示修复
问:服务有异常 但没有弹出通知
答:这可能是Windows阻止BC弹出通知,需要在通知中心进行设置
打开开始菜单 点击账户头像下的齿轮进入 设置
在Windows设置中选择 系统
侧边栏选择通知和操作
确保 获取来自应用和其他发送者的通知 开关打开
继续往下 找到比特彗星的通知控制开关 设置为开
重启比特彗星 右下角应会弹出通知
点击通知 提示修复服务 选择 是
提速服务已在运行
引用与参考:
mark一下,等一个绿灯问题。
自己折腾了好久还是黄灯,但是实在不想做一个只下载不上传破坏社群环境的人,确实需要一个比较简单易懂的教程来让我这种电脑白痴都可以按步骤操作一下。
截图和评论显示问题
问:评论和截图无法显示该怎么办?
答:评论和截图无法显示可能由多方面的原因造成,要具体情况具体分析
这里分为 软件问题 和 网络问题 两大类
软件问题部分
问:打开评论和截图显示以下内容
答:未安装WebView2 造成的
问:WebView2 是什么?为什么之前的版本不需要?
答:
v1.99 Beta1 [20230222]
界面改进:增加深色模式,默认跟随系统设置,可在主窗口查看菜单切换(需 Win10 1809 或更高版本)
界面改进:任务截图及任务评论改为使用WebView2显示界面(需 Win7 或更高版本,若系统缺少相关组件可自行安装)
界面改进:左下角通行证页面改用WebView2显示界面
界面修正:磁链任务下方没有显示截图
核心改进:任务截图及任务评论改用新的传输协议
核心改进:任务截图增加本地缓存,避免每次显示重新下载
核心修正:UDP tracker缓存数据没有及时清理,导致程序退出时卡顿
核心修正:RSS自动下载器关键字为空时,应允许下载
在v1.99 Beta1 之后 任务截图及任务评论改为使用WebView2显示
WebView2 可以简单的理解为一个简易的 Edge 浏览器 api,任务是替代老旧的IE浏览器api来显示网页
在v1.99 Beta1之前 评论、截图、通行证 都是通过旧的IE浏览器api显示的
更新后默认使用WebView2,在Windows10 或更高版本的Windows中已经预装了WebView2 (就像以前的IE一样)
而在Windows7 中需要自行安装
点击第一个链接即可下载 WebView2 的在线安装程序 链接
如果网络不好无法通过线安装程序下载,看尝试使用离线安装程序 链接
如果连不上微软的网站 这里还准备了网盘下载地址: 阿里云盘下载
(本来想用磁力链接来分享的,但考虑一下可靠性还是用了网盘)
下载并运行安装程序,在安装向导的指引下即可完成安装
安装完成后重新BC或电脑即可
问:我已经安装了WebView2\我无需安装,评论、截图显示为一片空白
也没有任何提示或报错
答:这可能是WebView2 控件没有及时创建造成的,应该算是1.99版本一个小bug 2.0预览版好像已经修复了
在1.99版本下可以通过重启BC的方式来解决
或者取消勾选 始终显示 右键评论或截图选项卡弹出此菜单
1.99正式版开始windows10下如果启用始终显示选项卡会无法显示截图
未选中BT任务的时候,点击了截图选项卡,灰屏无法加载出来,后续点击BT任务在点截图也没用,必须重启软件了
网络问题部分
问:评论、截图区出现报错\白屏仍然存在
答:这应该是网络问题造成的
问:如何解决
答:先从dns问题开始排查
问:dns是什么?改如何操作?
不想看原理也可以直接跳到后面的操作部分
答:简单来说dns就是将好记忆的域名和不好记忆的ip地址联系起来的东西
(这里只是简单讲一下,实际过程更加复杂,看不懂也没关系,知道这个东西比较重要即可)
#这是百度的域名
www.baidu.com
#这是百度的IP
180.101.50.242
我们访问百度的时候再浏览器里输入 百度的域名
但是电脑不能从这个域名直接连接百度的服务器,要使用ip地址才行
但很显然这个域名里并没有包含ip
这时就需要dns服务器了,将域名变成(解析为)ip
电脑会向DNS服务器发起请求,询问 “www.baidu.com”对应的ip地址,
不出意外的话,DNS服务器会告诉你百度的ip,有了ip就可以连百度的服务器了
如果在这个过程中出现了问题,比如返回的ip是虚假或错误的(DNS污染、劫持)
那就无法正常访问了
截图和评论区就相当于一个网页,想要正常显示也需要经过上述的过程
问:我大概理解了,我们需要让电脑知道评论和截图服务器的ip地址,但用来通过将域名变成(解析为)ip的dns存在问题,导致无法获得正确的ip从而显示评论和截图?
答:是的
问:有方法跳过dns服务器直接让电脑知道域名对应的IP地址吗?
答:有方法,通过修改host 文件实现
问:host文件有又是什么?
答:简单来说 host 文件用于记录 域名和ip的对应关系,如果在这个文件中记录了某个域名和ip的对应关系 那么系统就会跳过dns查询,直接使用文件中的记录
相当于直接告诉电脑某个域名对应的ip地址
问:这样说来,我可以将任意的域名和IP地址对应在一起,甚至可以吧百度的域名对应上QQ的ip地址?
答:是的,可以这么做
问:不过如果电脑通过dns无法获得正确的IP地址,修改host文件需要填写上正确的ip,我该如何或者获得这个正确的ip从而告诉电脑呢?
答:可以通过在线dns查询工具获得,建议选择国外的
问:我现在大概理解了,但具体的操作要怎么做呢?
操作部分
答:要先确定dns存在问题,如果dns是正常的就不需要修改了
已知 截图、评论和通行证使用以下这些域名
passport-client.bitcomet.com
#彗星通行证的域名
www.xytalk.net
#评论使用的域名
www.fileshot.net
image.fileshot.net
#截图使用的域名
先通过系统自带的查询功能进行查询IP
同时按下win 和R键 弹出运行
输入cmd 点确定 弹出命令提示符 窗口
输入 nslookup 并加上想要查询的域名
例如
nslookup passport-client.bitcomet.com
输入后回车 查看查询结果
这就是本地查询得到的结果,下面使用在线工具进行查询
输入域名 并查询
查看结果
其他的几个域名也是同样的做法
比较两种查询得到的IP地址 如果一致则dns没有问题
如果不一致则说明存在问题 可以通过修改host文件来解决
(此部分来自 像素帝 的教程)
搜索“记事本”,右键,以管理员身份运行
点击【文件→打开】
选择显示【所有文件】
选中【C:\Windows\System32\drivers\etc\hosts】,点击【打开】
注意,如果C:\Windows\System32\drivers\etc 中没有hosts文件 请手动创建,右键空白处>新建>文本文档>重命名为hosts 并删除 .txt 扩展名
在 host 文件添加以下文本:
38.242.234.0 passport-client.bitcomet.com
65.109.165.230 www.xytalk.net
65.109.172.8 www.fileshot.net
65.109.172.8 image.fileshot.net
注意,服务器的IP可能会发生变化,请以在线工具查询的结果为准
DNS 部分排查到此结束
问:通过刚才的操作后依然无法显示,该怎么办?
答:如果排除了DNS问题,那有可能是IP被阻断了,也可能是提供截图和评论的服务器本身存在问题
问:如果IP被阻断了该怎么做?
答:这种情况下就需要挂代理了
问:如何设置?
答:可以在彗星内设置代理服务器
勾选 使用代理显示网页 和 将代理用于其他网络流量
这样显示截图和评论时会通过代理服务器来连接,以防止直接连接时被阻断
推荐使用socks5协议 这样可以 可以勾选 使用代理服务器进行 DNS 查询
勾选后 DNS查询也会通过代理服务器,防止直接查询时受到污染或劫持
问:如何获得代理服务器
答:提供几个关键词 “v2rayN” “Clash for Windows”
代理服务器的搭建和选择请自行探索
使用免费节点进行连接教程:
参考和引用:
开启专家模式
高级设置中 启用专家模式,搜索system.enable_expert_mode,选中是,并且启用
问:开启专家模式有有什么用?
答:开启专家模式后可以显示更多信息,方便诊断
问:有哪些较为常用的调试信息?
答:
长效做种信息
此时任务栏上点击右键,即可打开”长效种子上传“标签
或者左侧点击长效做种,也可以看到完整的列表
用于观察哪个\(些)任务在进行长效上传
详细内存占用
可以查看内存占用的细节,用于内存占用过高时的诊断
UDP传输量
一般用于确定网络发生断流时哪一项发送了过多的UDP包
参考和引用:
元数据获取问题
问:一直显示等待元数据文件下载中
答:点立即下载即可,获取元数据需要一些时间,获取后会开始下载。
问:部分任务获取到了,但是还有一些任务 等待元数据文件下载中
答:请尝试重启任务,即暂停任务后再开始,BC下载元数据时似乎不支持断点续传,即必须从一个用户那里完整的获取到元数据,不能从多个用户获得一部分后再拼接起来
重启任务可以加快重试,应该可以提高下载元数据的成功率
问:重启过任务后又有一些获取成功了,不过还是有获取不到的
答:可以通过在线工具来获取种子
在btsow用磁力转换成种子是比较方便的
将磁力复制到剪贴板后直接粘贴即可
获取成功后会来到详情页面
点击中间的按钮下载 种子文件
会跳转到 btcache.me
输入验证码后即可进行下载
缺点是 btsow的网址会频繁更换 可能需要代理才能访问
网址发布页:
问:btsow似乎是通过调用 btcache.me 来进行种子获取的,为什么不直接使用 btcache.me来下载种子?
答:对,因为btsow可以直接使用磁力,而直接在btcache.me下载只能使用特征码并且有格式要求
(相当于btsow在调用btcache.me时对输入的磁力进行了一次转换)
只能使用16进制哈希即特征码 并且全部字母要大写(使用URL链接下载时必须全部大写)
问:如何直接在 btcache.me 下载种子?
答:先在BC中选择无法获取元数据的任务,右键弹出菜单 选择复制> 特征码v1
粘贴特征码并点击下载
若获取成功会和之前一样跳转到下载界面
也可以去 https://itorrents.org/ 看看不需要填写验证码 但下载起来稍微复杂一些
问:这些网站都在国外访问起来比较麻烦,有没有使用软件获取的方法?
答:有,可以使用其他的客户端进行来获取,完成后再由BC下载,比如迅雷
问:迅雷?迅雷不是吸血客户端吗?
答:是的,可能除了迅雷极速版和远古版本的迅雷外,相对较新的版本都是吸血的
不过这里我们要利用迅雷来获取元数据,确切的来说是利用迅雷的服务器来下载元数据
具体的操作已经有人做过教程了
此部分 来自像素帝的 教程
问:如果用了这么多方法还是没办法获取要怎么办?
答:如果尝试了上述所有的方法还是无法获取元数据的话,建议更换种子,这个可能已经是个死种了
当然也可以一直挂着,过上几个月说不定就获取到了
问:如果彗星的服务器出现问题不会影响元数据的获取?
答:不会,一般来说元数据是从其他已经获得元数据的客户端那里获得的,彗星的的服务器也没有下载元数据的功能
参考和引用:
断网问题
问:使用彗星进行下载的时候网络会变得缓慢甚至会断网
答:如果出现网络断流可能是由于DHT发包量过多造成的
可能是运营商限制造成的,也可能是路由器\光猫性能瓶颈
问:如何设置?
答:在高级设置中找到 network.max_udp_pkt_per_sec 默认值为 1000
可以逐渐调小数值,或者直接设置为 10 ,设置为10的时候一般不会再出现断网问题
除此之外还需要调整 dht.udp_send_queue_threshold 此项目用于控制DHT UDP 发包队列 因为调小了发送速度,也需要调整队列长度,以防止DHT发包堆积从而占用大量内存
默认值为30000 在 UDP 发起为10 的情况下 可以设置为 300 或更小
问:如果还是存在断网的现象怎么办?
答:如果修改发包量后仍然会断网,可以尝试禁用DHT
取消勾选 允许加入到公共DHT网络,以禁用DHT
参考和引用:
内存占用过高
问:比特彗星内存占用过高怎么办?
答:请打开专家模式 并查看统计中 展开 内存使用 选项 以查看是什么占用了内存
问:一般哪些项目容易占用较多的内存?
答:
torrent列表
如果启用了种子市场,并且加载的其中有大量的种子就会造成此项占用大。
解决办法:限制种子市场最大条数,右键弹出菜单以选择限制条目数。
如果不使用种子市场请直接禁用以避免不必要的内存占用
如果确实有使用种子市场的的需要,且内存确实不足的话请按照此链接中的建议 调整系统虚拟内存
UDP传输缓冲区
UDP缓冲区占用过大可能是由于限制了总UDP发包量后没有修改DHT发送队列造成的
磁盘写操作缓冲区
磁盘写操作缓冲区占用过大,说明硬盘的写入速度跟不上下载的速度,
有可能是硬盘读写性能差,导致数据无法及时写入磁盘,内存用尽后会自动限速
也可以手动进行下载速度限制,使硬盘可以及时写入数据。
也可以先下载到固态硬盘,然后在移动到机械硬盘存储,或者更换性能更好的垂直式机械硬盘。
比如一些移动硬盘,写入速度也很差,数据来不及写入到硬盘中,会先下载到内存,然后后续在进行写入硬盘,这是一个优化防止电脑网速过快下载引起下载掉速的特色。
比特彗星设置SSD固态硬盘下载,完成后自动移动到机械磁盘
D盘是固态,E盘是机械的设置方法如图
磁盘缓存
使用内存做缓存加快硬盘读写速度
对机械硬盘来说十分重要
一般来说在内存足够的情况下缓存越大越好
图中的展示的为官方默认参数
官方版的磁盘缓存设置相当保守
如果使用的是调整过参数的版本 磁盘缓存大小会有所区别
缓存设置过小也会影响下载和上传
BT传输缓存和长效种子上传缓存最小不应小于 1024
如果觉得内存占用多可以手动进行调整
设置建议
HTTP连接缓存:不调整
假设总物理内存为8GB即 8192 MB (实际要略小一些)
希望为系统和其他程序保留3GB内存即3072MB
减小缓存填写3072
空闲内存小于此数值时会减小缓存
BT缓存和长效缓存之和 为 8192-3072=5120 MB
可以各分配一半即 2560
也可以为BT多分配一些
勾选 自动调整
参考和引用
需要勾选倒数第2、3项
代理问题
在截图和评论显示问题的最后我们提到的使用代理服务器进行连接
但没有提供代理服务器的获取方法
这里给出通过免费代理服务器来显示截图和评论的方法
注意
不建议将免费节点用于除显示截图和评论以外的用途
免费节点的安全性和可靠性无法保证
平台 Windows
软件 v2rayN
GitHub上的免费节点:
- GitHub - aiboboxx/v2rayfree: v2ray节点、免费节点、免费v2ray节点、最新公益免费v2ray节点订阅地址、免费v2ray节点每日更新、免费ss/v2ray/trojan节点、freefq
- GitHub - freefq/free: 翻墙、免费翻墙、免费科学上网、免费节点、免费梯子、免费ss/v2ray/trojan节点、蓝灯、谷歌商店、翻墙梯子
v2rayN下载地址:
下载v2ayN
展开 “Assets”
根据发布文件中的指示和系统实际情况选择
64位系统建议选择 “zz-v2rayN-With-Core-SelfContained.7z”
不需要额外安装 .NET 6.0
下载并解压
运行主程序 v2rayN.exe
运行后程序会最小化到托盘
左键单击 托盘图标弹出 窗口
修改系统代理为 不改变系统代理
我们只使用其来显示截图和评论
接着添加节点订阅
点击 订阅分组设置
点击添加
设置名称 任意设置
填写更新地址 填写上文项目中提供的更新地址
分成两组
设置更新时间
https://raw.githubusercontent.com/aiboboxx/v2rayfree/main/v2
#
https://raw.fastgit.org/freefq/free/master/v2
更新订阅 不通过代理
因为还没有获得任何节点
https://raw.githubusercontent.com/aiboboxx/v2rayfree/main/v2
此更新地址似乎需要通过代理才能连接
建议先使用 https://raw.fastgit.org/freefq/free/master/v2
获取到节点后通过代理更新
获取到的节点
测试节点
右键任意节点 弹出菜单
选择 一键多线程测试延迟和速度
等待测试完成 查看结果
挑选可用的服务器 延迟大于-1 且有速度
右键 设置为 活动服务器
检查socks监听端口
监听 10808 端口
在彗星中设置代理服务器
服务器地址为127.0.0.1 即本机地址
端口为 v2rayN 左下角socks端口
勾选倒数三项
重启彗星
如果设置正确
截图应该就可以显示出来了
v2rayN日志中会有报错
不过似乎并不影响使用
设置开机启动
需要管理员权限
注意
v2rayN不具有自动切换节点的功能 如果过一段时间发现又用不了了 请手动重新选择服务器
参考和引用
绿灯问题
Part 0 前言
终于要开始写绿灯问题了即端口问题
其实这不问题仅局限于比特彗星也包括其他bt类软件
确切的来说是所有涉及到p2p通信的软件
考虑到复杂的实际环境,本教程不能做到像先前的那些教程一样
只要按照方法一步一步走就可以完成设置
更多是提供一个解决问题的思路,思路就可以根据具体情况具体分析了
当然基础知识是必不可少的,没有这些在理解和实施上就会遇到困难
毕竟授人以鱼不如授人以渔 学会了方法才能应对不同的情况
那些基本的东西是不会变的
本教程将以讲解基础知识和解决思路为主
基础知识也不会讲的很深入,知道它们是什么和做什么就可以了
Part 1 基础知识
1.1 IP和端口
我们还是先从 IP地址 和 端口讲起吧
问:IP地址和端口是做什么的?
答:当我们在互联网上进行通信时,每个设备都会被分配一个独特的标识符,这就是IP地址。可以把IP地址想象成一个房子的地址,它告诉互联网上的其他设备如何找到你所在的位置。IP地址由一串数字组成,比如104.16.249.249 和 203.0.113.1
端口则是用来区分同一个设备上不同应用程序或服务的。你可以把端口想象成一栋大楼的门牌号码,每个端口是一个房间,里面住了不同的程序,要找到某个程序就需要知道他使用的端口号即住在哪个房间
端口号是一个数字,范围从0到65535。一些端口号是约定俗成的,例如80端口用于HTTP通信,443端口用于HTTPS通信。
当你在浏览器中输入一个网址时,你的电脑会将该网址解析为对应的IP地址。然后,电脑会过指定的端口与该IP地址上运行的服务器建立连接,并进行数据交换。IP地址和端口号一起组成了网络通信中的目标地址,使得数据能够正确地到达目标设备上的指定的应用程序。
简而言之,IP地址是用来标识设备在互联网上的位置,而端口则是用来区分设备上不同应用程序或服务的通信通道。它们共同构成了互联网通信中的目标地址,确保数据能够准确地传输到目标设备的指定应用程序。
问:我知道了,ip地址端口就是网络世界的地址,有了ip和端口我们就能找到不同电脑上运行的程序了
不过ip地址好像还有什么公网ip、私网ip、ipv6 什么的,这些又是什么?
答:我们先讲公网IP地址和私网IP地址
公网IP地址是全球唯一的IP地址,用于在互联网上标识和定位设备。它可以直接从互联网上访问到。
我们一开始所说的情况就是公网IP地址。
相当于 XX省XX市XX区XXX路XXX号
私网IP地址用于在局域网或内部网络中所以也叫局域网IP地址。这些地址在全球范围内不唯一,它在私有网络内部可用。通常在家庭、办公室或组织内部使用,用于实现内部设备之间的通信,但不能直接从互联网上访问到。
相当于 XX栋XXX室
问:那我们家里的网络用的是私网IP地址?如果不能直接从互联网上访问到我们又是如何上网的呢?
答:对一般是的,使用私网IP地址的电脑或者设备可以通过NAT技术来上网
1.2 NAT
问:NAT是什么?
答:NAT技术即 NAT(Network Address Translation,网络地址转换)技术
简单的来说它可以让多个使用私网IP的设备共用一个公网IP来上网
问:看来想要上网还是需要公网IP地址,那NAT是如何 共享 这公网地址的呢?
答:还是一开始大楼和房间的例子
在直接使用 公网IP的情况下整个电脑是一栋独立的大楼 而程序住在大楼的房间内,由门牌号即端口号来区分,大楼之外就是互联网世界
相当于独门独栋的房子
在家庭网络中NAT转换过程一般由家用路由器负责
此时电脑是依然是一栋大楼 程序依然住在大楼的房间内,只不过在这座大楼之外不是互联网世界,
而是局域网,相当于一个小区而 路由器则是这个小区的出入口
当电脑发送请求数据到互联网上的服务器时,它们会先到达路由器。
路由器上的NAT会检查这个这个数据的发件地址和收件地址
此时这个数据的发件地址为 电脑获取到的局域网IP+发送这个数据的程序使用的端口
而收件地址则是 服务器的IP地址+端口
NAT将发件人地址改成自己的公网地址,而端口一般选择一个随机的端口
收件人地址不变
并记录下这次改写 并将数据发出
当数据数据到达服务器时
在服务器看来是路由器在向自己发送请求
因为发件人是写的是 路由器
于是服务器发送了响应数据
发件人为 服务器自己的IP+服务端程序的使用的端口
收件人则 是路由器的公网地址+路由器发送请求时使用的端口
即请求数据中的 发件地址
当路由器收到这个响应数据后再次修改地址
发件人不变
收件人改成电脑最初发送请求时的 收件人
即 电脑获取到的局域网IP+最初发送这个数据的程序使用的端口
在电脑看来是服务器直接回复了他的请求
毕竟收件人写的是自己
而发件人是服务器
(关于NAT可以看看这个视频 “https://www.bilibili.com/video/BV17W411d7aQ” )
问:这还挺复杂的,不过大概是明白了。想要共用一个公网地址还不是件简单的事情
那绕来绕去最终上网还是要公网IP为什么不在每个电脑弄两个IP,一个公网,一个私网这样不是会更简单吗?
答:这就涉及到公网ip不够用的问题
问:公网IP地址不够用?
答:是的IP地址的数量是有限的
IP地址的范围是从 0.0.0.0到255.255.255.255
其总数约为43亿个 实际可用的ip数量会更少,要除去一些特殊地址
问:这看起来挺多还是不够用吗?
答:不够用,一开始设计的时候认为是够用的,然而在2019年地址就分配完了
问:那后来的用户岂不是没网上了?
答:不会,还记得我们刚才说的NAT和私有IP吗?
私有ip是可以重复的 而NAT又可以让多个使用私网IP地址的设备共用一个公网IP上网
这样后来的用户还是可以通过NAT转换 来上网
问:这样能容纳的用户还是有限的吧?
答:是的,但是通过增加NAT层数来解决
在之前的例子中 是家里的设备共用一个公网IP地址来上网
我们可以再加一层NAT即运营商级别的NAT 这样路由器获得的也是私网地址
运营商可以让许多个家庭共用一个IP上网
问:老是这样套娃也不是办法吧?
答:对,一直增加NAT不能从根本上解决问题,于是有了IPV6
1.3 IPV6
问:所以IPv6是什么?
答:IPv6 即 “Internet Protocol Version 6”(互联网协议第6版)
而我们之前所说的IP都是IPv4
即 “Internet Protocol version 4” (互联网协议第4版)
问:有IPv5协议吗?
答:有,是一种实验性的协议 没有广泛使用
问:IPv4和IPv6有什么区别?
答:最明显的区别就是地址长度和地址数量
IPv4使用32位地址,提供大约40多亿个唯一的IP地址
而IPv6使用128位地址,可以提供约340万亿亿亿亿个唯一的IP地址
86.148.235.250
#IPv4地址看起来像这样
2a0e:425:6685:0:99a2:c6cb:a8c:42ca
#IPv6地址看起来像这样
有了IPv6我们就不太需要担心地址不够用的问题了
问:这么好的东西为什么不早点用上
答:因为IPv6和现有的IPv4并不兼容
即两者之间不能直接连接
虽然有过渡技术可以使两者相互连通但这需要较为复杂的设置
这意味这要完全支持IPv6需要在软件上进行适配
无论是看不见的核心网络设备还是看得见的应用程序都需要做支持
这不是一件简单的事情 要花不少时间
好在发展IPv6有国家在推动,目前三大运营基本都已经有IPv6了
“ 国家IPv6发展监测平台 ”
问:既然有了这么多的地址,那应该不再需要NAT了吧?
答:一般来说是的,不过在一些特殊的地方NAT还是有用武之地的
1.4 路由器 交换机 和 光猫
问:路由器、交换机、光猫是做什么用的
答:我们先从交换机讲起
简单的来说交换机可以将多台电脑连接在一起
使他们之间可以互相连接和访问
也就是组成了一个局域网 (Local Area Network)即LAN
问:那路由器呢?
答:简单来说路由器一般用于连接不同网络
交换机可以组成一个个的小局域网
每一个小个局域网内的设备可以互相访问
但是不能访问到其他局域网里的设备
有了路由器之后就可以沟通起各个局域网
问:家用路由器似乎不只有路由功能?
答:对家用路由器一般还包括以下功能
交换功能
防火墙
NAT
无线功能
DHCP功能
DNS解析器
问:交换功能?那不是交换机做事情吗?
答:对,因为家用路由器一般都内置一个交换机
也就是我们看到的LAN口
问:那WAN口就是用来连接其他网络的了?
答:对,
WAN是广域网(Wide Area Network)的缩写。
在这里指的是该路由器与外部网络(通常是互联网)之间的接口。
而路由就是在 WAN 和 LAN 之间进行的
这样就实现了局域网和外部网络即互联网的连接
问:那光猫又是什么?
答:要想了解光猫我们要先了解“猫”
这里说的“猫”是modem的音译
即 调制解调器
在早期连接网络并没有专门的线路
一般会使用电话线或者电视同轴线
电脑使用的是数字信号
而这些线路上使用的是模拟信号
你只需要知道这是两种不同的信号就行
没有办法直接沟通,就像两门不同的语言一样
这时候就需要一位翻译来解决语言不通的问题
而modem就是这个翻译
有了这个翻译
发送数据时,猫将电脑发出的数字信号翻译成模拟信号再经由电话线/同轴电缆传出
接受数据时,猫将从电话线/同轴电缆上传来的模拟信号翻译成数字信号后传给电脑
随着时代和技术的发展光纤开始取代电话线/同轴电缆作为传输线路了
现在家庭网络一般都采用光纤接入
这就又回到之前的那个问题了
在光纤中的是光信号 而电脑使用的数字信号属于电信号
依然无法直接沟通,又需要一位翻译
因为在光信号和电信号之间做翻译,所以我们叫它“光猫”
问:可是我看运营商给的光猫好像也有不少其他的功能?
答:对因为现在的光猫又吸收了家用路由器的功能
确切的来说是和家用路由器合体了
运营商们也更多叫这个为家庭智能网关
1.5防火墙和NAT
问:防火墙是做什么的?
答:简答的来说防火墙就是一个过滤器、一个筛子
可以根据规则来过滤数据,决定是否允许数据通过
是一种重要的安全措施
问:那为什么很多时候遇到网络问题,很多教程教第一件事情就是关防火墙?
不会有安全上的问题吗?
答:因为防火墙有过滤数据的能力,所以发生网络问题确实有可能是防火墙拦截
造成的,不过这里的防火墙一般指 Windows防火墙 而现在的程序一般都有添加防火墙规则
的能力,即让防火墙允许其通过。
至于安全方面,家庭网络(ipv4) 一般有NAT保护问题不是很大
问:NAT还有保护安全的作用?
答:是的
问:可是之前讲解中,NAT不就是共用公网IP上网,节约ipv4地址吗?
答:没错,不止于此
因为通过NAT上网的设备共用一个了公网ip,所以在互联网上的其他设备看来就只有一个设备,
即NAT本身(网关),换句话说就是内网设备躲在在了NAT后面
有点像老鹰捉小鸡的游戏,“老鹰”是互联网上的其他设备(有可能是攻击者) “母鸡”则是NAT(网关)
而“小鸡”则是内网设备,如果保护得当 “老鹰”是抓不到“小鸡”的
不过这样会产生一些其他的问题
问:什么问题?
答:就是互联网上的其他设备难以访问NAT后面的内网设备
问:可是内网设备可以通过NAT来上网,那说明互联网上的设备和内网设备直接的连接
应该是没有问题的啊?
答:对,但这有一个前提条件,那就是内网设备发起连接,而拥有公网的服务器接受连接
问:难道不都是这样的吗?
答:一般来说是的,不过还有另一种情况即外网设备(不一定有公网IP)发起连接,而内网设备接受连接
问:难道在这种情况下NAT会阻止连接?
答:确切的来说在默认情况下NAT无法处理这些连接
所以看起来就像被阻止了一样
问:无法处理?为什么?
答:还记得之前讲解的NAT处理过程吗?
NAT将发件人地址改成自己的公网地址,而端口一般选择一个随机的端口
收件人地址不变
并记录下这次改写 并将数据发出
当连接由内部发起时NAT知道内网设备的IP和端口
也知道发送时使用的公网IP和端口
于是建立起了一个对应关系
而当连接是从外部发起时 ,NAT就犯难了
因为对方写的收件人地址是自己的公网IP和端口
NAT不知道它对应的内网端口和地址自然无法处理
问:这种情况很多吗?就是外网发起内网接受的情况
答:涉及到P2P通信的时候会
还是比较多的,比如bt下载,游戏联机等
P2P通信我们以后可能会讲
问:那不是有NAT的情况下就没法进行游戏联机和bt下载了?
答:也不是,只要解决NAT不知道对应关系这个问题就行
之后的教程会讲解 告诉NAT对应关系的方法
问:之前说安全方面,ipv4一般有NAT保护,关防火墙问题不是很大
那IPv6一般没有NAT,防火墙就比较重要了?
至于安全方面,家庭网络(ipv4) 一般有NAT保护问题不是很大
答:是的家用网络环境下IPv6一般没有NAT,所以防火墙是保护设备安全的重要措施
1.6 端口转发
在上一节中遗留了一个问题没有解决
也不是,只要解决NAT不知道对应关系这个问题就行
之后的教程会讲解 告诉NAT对应关系的方法
即 告诉NAT从外部发起的连接去到哪一个内网的设备上
以便在NAT后的设备接受来自外网的主动连接
问:那要如何操作呢?
答:可以通过 端口转发、upnp、和DMZ 来实现
一般家用路由器都拥有这些功能
我们先从端口转发开始讲解
端口转发 (Port Forwarding)
可以将一个端口上的数据转发到另一个端口上
即将公网端口上的接收的数据转发到内网某一台设备的的端口上
端口转发以规则的形式存在
有以下的几个重要的参数
外部端口 外网的端口
ip地址(内网) 内网电脑的ip
内部端口 内网电脑的端口
协议 使用的协议
有了这样的规则后当外网设备访问指定端口时
NAT会根据规则将其转发到对应的内网设备上
问:端口转发只能转发一个端口吗?
答:不止一个端口,可以通过多条规则转发多个端口
问:好像还有什么 端口转发 和 虚拟服务器 这两个有又是什么?
答:端口转发 端口映射 和 虚拟服务器 其实是指的一个东西
虚拟服务器 这种叫法一般在tplink路由器上比较常见
问:upnp是什么?
答:upnp 即 通用即插即用(Universal Plug and Play)
它相当于自动的端口转发
不需要手动填写规则,自动生成规则
但要求程序和路由器都要支持upnp功能
在操作系统上 也需要启动对应服务
问:DMZ 又是什么?
答:DMZ 是“Demilitarized Zone”的缩写 也叫“非军事区”
也可以认为是 “不设防区”
相当于相当于将所有端口映射到一个内网地址上
这样一来那台内网设备就相当于直接暴露在公网上
特点总结:
端口转发
便捷性:低 需要手动填写的内容较多
稳定性:高 对程序无要求 静态规则除非人设置否则不会改变
安全性:高 纯手动设置
UPnP
便捷性:高 启用UPnP后无需额外配置
稳定性:低 对路由器、程序、和操作系统都有要求 容易出现一些奇怪的问题
安全性:中 软件动自动设置 一般在路由器上可以查看已创建的规则
DMZ
便捷性:高 仅需填写内网设备的IP地址
稳定性:高 对程序无要求 静态规则除非人设置否则不会改变
安全性:低 转发了全部的端口 相当于内网设备直接暴露在公网上 需要在设备上设置防火墙以保证安全
1.7 P2P模式和C/S模式
问:为什么使用bt下载的时候会涉及到开端口的问题?
而其他的下载方式 比如浏览器 网盘 等都不存在这个问题?
答:这其实就涉及到传输模式上的一些区别也就是 P2P模式 和 C/S 模式
我们先讲 C/S 模式
C/S 模式 (Client-Server) 即服务端-客户端 模式
我们平时使用的应用大部是 C/S 模式的
CS结构看起来像这样:
有中心服务器的中央网络系统
图片来自维基百科
在这个结构中有一台中心服务器
用户想要下载文件必须连接这个中心服务器 资源存储在这个中心服务器中
下载速度和服务器的带宽有关
如果服务器的带宽是固定的
那下载的用户越多 每个用户的平均下载速度也就越慢
如果中心服务器失效 那么其他用户也就无法进行下载了
在这个结构里面 一般来说 服务端只提供服务
而客户端只使用服务
而连接一般由客户端发起 服务端接受连接
这些中心服务器几乎都是有公网ip的 (可被直接访问)
所以不太需要考虑客户端的网络环境
问:所以这就是网盘不开会员下载慢的原因吗?
答:算是一个重要的原因
如果免费用户下载不限速 那将产生巨大的带宽成本
所以对非会员用户下载限速 也算是正常的操作
问:那P2P呢?
答:P2P 是 (peer-to-peer)的缩写 即 对等式网络
bt下载 电骡(eMule)部分游戏联机 等 会使用这种模式
P2P结构看起来像这样:
无中心服务器的对等网络系统
图片来自维基百科
在P2P模式中没有客户端和服务端之分
也可以认为每台设备既是服务端也是客户端
每个设备之间是平等的
可以同时作为资源的请求者和提供者
我们称其为节点
资源通常存储在各个节点上
当一个节点加入P2P网络并共享资源时,它将提供自己拥有的资源
(例如文件、数据、带宽等)给其他节点使用。
其他节点可以通过与拥有资源的节点者直接通信,请求并获取所需的资源
问:所以P2P网络中的节点需要像C/S模式中的中央服务器那样 打开端口
而其他节点来访问?
答:是的
问:端口也不是一定要开吧?我可以去连接其他的节点啊?
答:对,开放端口不是必须的 可以去主动连接其他节点
但是其他节点需要开放端口来接受你的请求
如果其他的节点也没有开放端口
那它们也无法接受你的请求
而如果你的节点开放了端口 就可以接受其他节点的请求
无论对方是否开放端口
问:这么来说两个未开放端口的节点 无法相互连接了?
答:是的 连接关系如下
(公网节点:此处表示开放端口的节点 内网节点:此处表示未开放端口的节点)
》和《 表连接发起方向
公网节点1 》公网节点2 √
公网节点1《 公网节点2 √
内网节点1 》内网节点2 X
内网节点2《 内网节点1 X
公网节点 》内网节点 X
公网节点《 内网节点 √
两公网节点之间可以互相连接
两私网节点不能互相连接
公网节点无法主动连接内网节点
内网节点可以主动连接公网节点
问:这么说来端口不通也可以用bt下载咯?
那开端口有什么好处呢?
答:一般认为 端口是否开放 对上传速度影响较大
对下载速度的影响相对较小
开放端口可以获得更好的上传速度
接受其他节点的连接请求 比 向其他节点发起请求效率更高
问:可是我要上传速度有什么用呢?
答:为BT网络做贡献 确切的说为其他节点做贡献
你的下载速度是别人的上传
而你的上传是别人的下载
如果没有人上传 那么也没有人有下载速度
问:P2P不会像C/S模式 那样产生带宽费用的问题?
答:还是会的,不过这个费用是各个节点分担的
如果是在家中使用bt下载那使用的就是家庭网络的带宽
问:那家庭网络的上传和下载速度不对等
岂不是下载速度也很慢
答:只要节点的数量够多就行
每个节点贡献少量上传速度 总量还是很可观的
这也是bt下载人越多越快的原因
part2 操作与经验
2.1目标与困难
通过前面的基础知识讲解 我们对
网络传输的过程和p2p模式有了一定的了解
现在要明确我们接下来操作的目标
即 开放端口
开放端口的原因和好处已经在 上一章中讲解过了
问:常见的困难有哪些呢?
答:问题主要集中在
运营商 光猫 和 路由器
讨论针对家庭网络
手机和电脑对IPv6的支持基本上都是完善的
一般不会存在设置困难的问题
还需要分IPv4和IPv6来讨论
IPv4方面:
运营商 指 运营商级别NAT
运营商级别NAT用户无法直接调整
光猫 指 光猫设置
目前大部分的光猫集成了路由器功能
且在事实上承担了路由器功能
性能参差不齐 容易影响网络稳定性
光猫背面印刷的默认管理账户权限低
(有些地方的默认账户密码就是超级管理员)
可修改的内容很少
各地区 各运营商 各型号的光猫 情况都有所不同
超级管理员获取较为困难
在ipv4方面 路由器的设置上一般不存在什么困难
IPv6方面:
运营商
在IPv6中一般是没有运营商级别NAT的
目前三大运营商 几乎都支持IPv6
广电 也宣布部署IPv6 不过目前进展似乎较慢
其他二级运营商可能在短时间内还不会支持
还有一种更常见的情况是运营商支持IPv6
但没有下发IPv6
即在光猫中只启用ipv4而没有启用IPv6
光猫
指光猫设置 和ipv4的情况差不多
依然是设置困难和性能差
路由器
指路由器对IPv6的支持问题
部分旧的路由器完全不支持IPv6
而一些较新的路由器对IPv6的支持不完善
支持上网功能但无法设置IPv6防火墙
端口转发等功能是针对NAT 只对ipv4有效
无法通过端口转发来实现开放IPv6端口
还有些路由器是支持关闭IPv6防火墙的
不过是直接关闭整个IPv6防火墙 这可能会造成一些安全问题
最好在终端设备上设置一下防火墙