交换机命名
默认大多数设备的名字是“Ruijie”,可以使用以下命令修改交换机的命名。
Ruijie>en
Ruijie#configure terminal
Ruijie(config)#hostname Switch ——>设置交换机的名字为”Switch”
Switch(config)#end
Switch#write ——>确认配置正确,保存
交换机命名
默认大多数设备的名字是“Ruijie”,可以使用以下命令修改交换机的命名。
Ruijie>en
Ruijie#configure terminal
Ruijie(config)#hostname Switch ——>设置交换机的名字为”Switch”
Switch(config)#end
Switch#write ——>确认配置正确,保存
命令模式
锐捷网络设备管理界面分成若干不同的模式,用户当前所处的命令模式决定了可以使用的命令。在命令提示符下输入问号键(?)可以列出每个命令模式支持使用的命令。
下表列出了命令的模式、如何访问每个模式、模式的提示符、如何离开模式。这里假定网络设备的名字为缺省的“Ruijie”。命令模式概要:
命令模式 | 访问方法 | 提示符 | 离开或访问下一模式 | 关于该模式 |
User EXEC (用户模式) | 访问网络设备时首先进入该模式。 | Ruijie> | 输入exit命令离开该模式。 要进入特权模式,输入enable命令。 | 使用该模式来进行基本测试、显示系统信息 |
Privileged EXEC (特权模式) | 在用户模式下,使用enable命令进入该模式。 | Ruijie# | 要返回到用户模式,输入disable命令。 要进入全局配置模式,输入configure命令。 | 使用该模式来验证设置命令的结果。该模式是具有口令保护的。 |
Global configuration (全局配置模式) | 在特权模式下,使用configure命令进入该模式。 | Ruijie(config)# | 要返回到特权模式,输入exit命令或end命令,或者键入Ctrl+C组合键。 要进入接口配置模式,输入interface 命令。在interface命令中必须指明要进入哪一个接口配置子模式。 要进入VLAN配置模式,输入vlan vlan_id命令。 | 使用该模式的命令来配置影响整个网络设备的全局参数。 |
Interface configuration (接口配置模式) | 在全局配置模式下,使用interface命令进入该模式。 | Ruijie(config-if)# | 要返回到特权模式,输入end命令,或键入Ctrl+C组合键。要返回到全局配置模式,输入exit命令。在interface命令中必须指明要进入哪一个接口配置子模式。 | 使用该模式配置网络设备的各种接口。 |
Config-vlan (VLAN配置模式) | 在全局配置模式下,使用vlan vlan_id命令进入该模式。 | Ruijie(config-vlan)# | 要返回到特权模式,输入end命令,或键入Ctrl+C组合键。 要返回到全局配置模式,输入exit命令。 | 使用该模式配置VLAN参数。 |
一、时区
显示时区
date --help 获取帮助 date -R date +%z
修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock -w 写入硬件,避免重启失效
二、时间
概念:Linux时间有两个
系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数
BOIS时间:也叫硬件时间(hc)
显示时间
[root@localhost ~]# date;hwclock -r Fri Feb 17 11:24:50 CST 2019 Fri 17 Feb 2019 11:25:00 AM CST -10.015012 seconds
设置时间
1、date -s
date -s 20121019 date -s 23:40:00
2、ntpdate
安装ntp: yum install -y ntp ntpdate time.windows.com && hwclock -w 同步时间且写入硬件
VMware ESXi 是由 VMware 开发的用于部署和服务虚拟计算机的企业级 1 类管理程序。作为 Type-1 虚拟机管理程序,ESXi 不是操作系统上安装的软件应用程序;相反,它包括并集成了重要的 OS 组件,例如内核。在 4.1 版之后,VMware 将 ESX 重命名为 ESXi。
摘自维基百科英文版翻译
简单的说,ESXi 就是一个虚拟机。但是与 VMware Workstation、VirtualBox 等工具却又有些不同。更具体的说,VMware Workstation 等工具是运行在操作系统之上的一个软件,如果没有对应的操作系统(Windows、macOS、Linux)等,它自身是无法运行的,操作系统不让它做的事情它也做不了,这种虚拟机我们一般叫 “Type 2” 虚拟机。
既然有 Type 2,那也是有 Type 1 的,所谓 Type 1 虚拟机,就是它本身就是一个操作系统,直接运行在裸机上。ESXi 就属于这种。
“人傻钱多戴,美帝良心想”
提到戴尔,我相信绝大部分人的印象都是这家伙不是卖笔记本、卖显示器,还卖服务器的吗?
哦好吧,其实 VMware 是 DELL 的子公司。是这样的,VMware 被 EMC 收购了,DELL 又把 EMC 收购了。
ESXi 的硬件要求很低,总结来说大概如下:
除此之外,最好再支持硬件虚拟化 Intel VT-x 或 AMD RVI
具体详细硬件配置可以查看官网的文档 ESXi 硬件要求
相信大家的配置绝对足够跑 ESXi 了,不过有几点需要注意的地方
很简单,用旧的笔记本,各种服务器…… 好吧,对于个人使用来说,服务器还是算了,那个耗电和噪音受不了的。
对于个人使用来说, 淘汰的笔记本(配置足够的话)、各种迷你主机是比较好的选择。
比如说 Intel NUC 就是很不错的选择,但是 NUC 价格又有些贵;所以最终我选择的是占美主机,便宜省电呀…… 如下图所示
只不过这个无线网卡,被我拆了卖咸鱼了。
由于 NUC 这类都是不带内存硬盘的,所以咱要自己买。推荐的话,既然都跑虚拟机了,起步 16G 为佳。存储的话,自然是 M2 NVME 或者 mSATA 的固态了。SATA 接口建议还是别插固态,SATA 接口留给普通的机械硬盘,做备份存储之类的用途。土豪直接上 1T 的固态那就不算啦!
这个功耗很低吧,一个月下来也就是三四块钱的电费
前面说过,ESXi 不支持?️网卡(有好些网卡都是不支持的,所以可以参考上面的硬件要求链接),所以这里需要先判断下自己的机器上什么网卡?如果是螃蟹卡的话,那么需要对安装镜像进行调整。具体判断方法,拆开看芯片,看产品介绍,Live CD 下 lspci 什么的都可以
ESXi 介绍页面
ESXi 下载
我们就点击页面上的 VMware vSphere Hypervisor (ESXi) 6.7U3 下载就可以了。
镜像有两种类型
第一种的 ISO,直接能启动;第二种下载回来说一个 zip 包,我们可以用它来打补丁。如果你是?️卡,那就选第二种吧
这个网上文章真的是太多了,基本上就是用 ESXi-customer-PS 之类的把网卡驱动添加进去
ESXi-customer-ps 官网
需要先安装 powercli,下载页面
网卡补丁,根据自己的型号下载 offline-bundle,避免网络问题
如何打补丁可以自己搜索下,我这里贴上来两篇
简单描述是这样的,打开 powershell,切换到对应的目录
如果你的网卡也是 Realtek 8168/8111/8411/8118 的话,并且信任我,可以考虑用我的现成的(点我下载)
把 iso 写到 U 盘中,比如说使用 rufus 这种,然后启动插 U 盘启动电脑,哦对了还要有个显示器和 HDMI……
安装过程很简单,接受,输入密码,下一步,下一步……
小提示:没有显示器怎么办?
靠着虚拟机、网卡指示灯、硬盘灯摸索着来吧。
哦当然了,ESXi 要插网线直接连到网络设备(如路由器)的,要不玩什么呀!
ESXi 安装完成之后,会直接显示它的 IP 地址,直接在浏览器输入这个地址就可以访问了(需要注意的是这个地址是用https,而不是http)。
界面很简洁,看着就会用
如果你的电脑上装有 VMware Workstation 的话,文件 – 连接到服务器,输入 IP 用户名(root)、密码也是可以进行简单的管理的
ESXi 本身的管理功能比较基础,甚至连克隆、迁移等功能都没有。为了做到这点,可以开个虚拟机安装 vcenter。
什么是注册虚拟机
ESXi 的使用非常简单,只要是用过虚拟机的人应该就是十分清楚的,傻瓜化操作
从 VMware Workstation 和 virtualbox 导出的文件都可以导入进来的
假如已经有了虚拟机的 vmdk 文件,并且这个文件在 datastore 中,那么我们可以直接注册虚拟机的。方法太简单了,不说了。
作为非常爱惜硬盘的我,如果从 Ubuntu Server 安装一个服务器版 Ubuntu 的话,不仅浪费时间,需要手工干预安装,而且还很占用硬盘。所以 ubuntu 官方维护了一个云镜像,其中包含各种环境使用的镜像,可以直接导入。
下面这个链接是每日构建的,点进去选一个日期,下载对应的 ovf/ova 文件就可以了
这个链接是发布版的,同样下载 ovf/ova 文件
下载回来直接导入就可以了
但是这个 cloud image 的 root 密码是什么呀!别怕,随机密码。开机按 shift 进 grub,选择 recovery mode 破个密码就好了。然后再 parted 或者 fdisk 弄下分区,完美。Cloud image 安装完占用硬盘不到 1G 哦~
如下图所示,我们可以为此虚拟机预留一定的 CPU 资源、限制 CPU 资源(虚拟机不会使用超过这个频率的 CPU)、份额,以及常见的硬件虚拟化、性能计数器等。
份额这个概念比较特殊,详细解释如下:
份额指定虚拟机(或资源池)的相对重要性。如果某个虚拟机的资源份额是另一个虚拟机的两倍,则在这两个虚拟机争用资源时,第一个虚拟机有权消耗两倍于第二个虚拟机的资源。
份额通常指定为高、正常或低,这些值将分别按 4:2:1 的比例指定份额值。还可以选择自定义为各虚拟机分配特定的份额值(表示比例权重)。
举个例子,
一台聚合 CPU 容量为 8 GHz 的主机上运行着两个受 CPU 约束的虚拟机。它们的 CPU 份额设置为正常,因此各得 4GHz。
现在打开了第三个受 CPU 约束的虚拟机的电源。它的 CPU 份额设置为高,这意味着它拥有的份额值应该是设置为正常的虚拟机的两倍。新的虚拟机获得 4GHz,其他两个虚拟机各自仅获得 2GHz。如果用户为第三个虚拟机指定的自定义份额值为 2000,也会出现相同的结果。
与 CPU 资源限制类似,内存也是可以进行限制的,道理类似
同理,可以限制硬盘写入,所以知道怎么做石头盘了吧!
前面提过,ESXi 不支持无线网卡,但是我们可以把无线网卡直接分配给虚拟机,那么就要用到网卡直通。具体方法就是编辑虚拟机设置,添加其他设备 – PCI 设备 / USB 设备
和 VMware Workstation 的设置基本差不多,一看就懂
我们可以直接通过网页端访问控制台端口,也可以通过下载 VMware Remote Console,或是 VMware Workstation 访问。
要装虚拟机,自然就要用 ISO 镜像,那 ISO 镜像自然就要上传到 ESXi 中…… 具体就是使用数据存储功能。
左侧导航栏直接点进去存储
点击数据存储管理器,太简明易懂了…… 上传就是了。
ESXi 默认会识别接驳的硬盘等设备,但是我们也可以添加网络存储,比如 NFS,点击新建数据存储,选择 NFS
相应的添加就好了
熟悉 VMware Workstation 可能知道,VMware Workstation 的网络可以分为桥接、NAT、host only 等,那么 ESXi 呢…… 对不起,ESXi 天生桥接。
在 ESXi 的网络设置中……
物理网卡的概念很好理解,就是真实接线的网卡,ESXi 本身是支持多网卡的,利用多网卡可以玩出很多花样,比如软路由……
交换机这个概念,对于不是搞网络的人来说,可能很生疏。路由器、交换机、集线器这三者究竟有啥区别啊?这不是本文讨论的重点。
ESXi 中的虚拟机交换机的概念很简单,简单的说就是连到虚拟机的那个 “设备”,由 ESXi 的内核提供,只有二层桥接的功能,不像真实的交换机,又能配 ACL 又能配这配那的。比如我们看下下面的这个图
这么多台虚拟机都 “连接” 到了这一虚拟交换机上,然后这个虚拟交换机用两条真实的网线连接到了我的路由器上。
虚拟交换机有啥意义呢?比如我有两块物理网卡,一块是 192.168.1.0/24,另一块是 192.168.2.0/24,那么我们就可以通过添加两个 vSwitch,然后不同的虚拟机就可以属于不同的网段啦。
虚拟交换机这东西,由于是内核虚拟的,自然也可以自己添加。方法也很简单,直接点击添加,起个名字,选择绑定到哪块物理网卡,确定就可以了。如下图所示
当然了需要注意的是,一块网卡一旦属于某个虚拟交换机,那它就不能属于其他的虚拟交换机了。
俗话说,狡兔三窟。一个虚拟交换机,如果增加网线作为备份线路,那也是有备无患的。
所以编辑 vSwitch,添加另外一条上行链路作为冗余。这样当你拔掉一条网线,虚拟机们还能无缝切换(真的是无缝,可能连 TCP 丢包都没有),一点不受影响。
添加方法很简单,直接编辑,添加另一条物理链路就好了
另外,假如你的 ESXi 不接网线,那么属于同一个 vSwitch 之间的虚拟机还是能通信的,而且是万兆网卡哦!只是流量不能往外走,要不怎么叫上行链路呢。
所谓网卡绑定,就是当你为一个虚拟交换机添加多条上行链路的时候,想让 ESXi 怎么调度啊?类似链路聚合,你是想 round-robin,还是 active backup,还是 load balance 呢?网卡绑定就是干这个事情的。
ESXi 的这四种模式,对应的意义如下:
基于 IP 哈希的路由:根据每个数据包的源和目标 IP 地址的 Hash 选择上行链接。对于非 IP 数据包,会使用位于这些偏移上的任何内容计算 Hash。
买 VPS 的时候…… 你这个口不是独享的!好吧,ESXi 也能针对虚拟交换机进行流量限制,如下图所示
实际上呢,虚拟机并不是直接连到 vSwitch 的。虚拟机上直接连接到端口组上的。不同的虚拟机可以属于不同的端口组。
端口组与虚拟机网络设置
添加端口组
ESXi 本身是通过网络管理的,那么自然也要有一个对应的 “网卡”,这里就是 vmk 网卡。可以把它理解成一个特殊的端口组,主要就是提供管理相关的访问。
有的时候,我们可能希望,所有虚拟机使用某一段的 IP,但是管理使用另一段 IP,这里就可以通过添加 VMKernel 网卡做到。
比如我们希望 ESXi 的管理 IP 能够有多个,做个备份,那么添加 vmkernel 也能做到
添加之后的结果
此时 Vmkernel 的拓扑
ESXi 真是太强大了,开虚拟机随便玩,部分硬件可以直通到虚拟机中;甚至可以给 ESXi 主机开 ssh,然后可以执行一些 ssh 命令,甚至可以运行 Python,吼。
Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。群晖的套件中心有Docker套件,但是这个管理工具功能太少,所以很多人喜欢用Portainer来管理,但是官方的Portainer只有英文版,今天来教大家安装一个中文的Portainer。
先来讲一下我的群晖环境:
1、群晖型号:DS3617xs
2、版本:6.22up4
3、已开启root权限
4、已安装docker套件
一、下载 Portainer中文可视化面板 到电脑上;
二、登录群晖系统,打开File Station,在docker文件夹下,右键把刚才下载的文件public.rar上传到群晖;
三、把上传的public.rar解压出来;
四、保留解压出来的public的文件夹,删除public.rar这个压缩包;
五、以root用户登录群晖的SSH,我这里使用的是xshell这个软件;
六、输入下面的命令(这里需要使用群晖的9999端口,输入本命令之前,请确认群晖的9999端口没有被占用):
docker run -d --restart=always --name=portainer -p 9999:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /volume1/docker/public:/public portainer/portainer
七、文件在下载中,需要说明的是:下载等待的时间跟你的网络有关,有可能几分钟,也有可能几个小时。。。如果你做了Docker加速,下载等待的时间就很快,几分钟就可以下好。
八、下载完成后会回到命令行的状态,这样就是下载好了的,就可以把xshell关掉了;
九、回到群晖系统,打开Docker,在容器这里,看到portainer已经在运行了;
十、在浏览器输入http://群晖的IP地址:9999,登录portainer,首次登录需要设置一个8位的密码,点创建用户;
十一、我们这是管理群晖的docker,所以选Local,点Connect继续;
十二、好了,中文版的Portainer安装完成
十三、在容器这,可以看到Portainer正在运行
BT 下载并不是一个人的事,比如你在下载一部生理卫生知识教学影片时,背后其实是有一群和你下载同样影片的人在为你上传,同时你也在为他人上传,这个影片下载的人越多,给你上传的人就会越多,速度就会越快。但如果找不到这些人,你就可能无法下载。那么如何才能找到和你下载同样影片的人呢?
在未开放端口的情况下,Aria2 无法与外界进行数据交换。所以开放端口是进行 BT 下载的首要条件。
如果是在 VPS 上使用 Aria2 下载,最简单粗暴的办法是关闭防火墙。如果你不想这么做,那么首先要知道端口号,这也许是你自己设置的,也许是默认的,总之打开 Aria2 配置文件就知道了。以下是 Aria2 完美配置中的端口信息:
# BT监听端口
listen-port=51413
# DHT网络监听端口
dht-listen-port=6881-6999
知道端口号后让防火墙放行这些端口即可。
如果是在本地电脑或者 NAS 上使用 Aria2 下载,需要在路由器上设置端口转发,Aria2 暂不支持 UPnP。
BitTorrent tracker 是帮助 BT 协议在节点与节点之间做连接的服务器,俗称 BT 服务器、tracker 服务器(以下简称为 tracker )。BT 下载一开始就要连接到 tracker ,从 tracker 获得其他客户端 IP 地址后,才能连接到其他客户端下载。在传输过程中,也会一直与 tracker 通信,上传自己的信息,获取其它客户端的信息。所以 tracker 在 BT 下载中起到了至关重要的作用。
每个 BT 种子都会内置 tracker ,但可能因为不可抗力而导致连接困难或者速度不理想,这就意味着很难找到下载相同资源的人。好在这个问题可以通过添加额外 tracker 来解决,这样你遇到和你下载同样资源的人的机会就更多,就更容易找到给你上传的人,速度自然就会快了。
trackerslist 是一个提供 tracker 列表的项目,几乎每天都会更新。列表还分为 udp、http、ws…… 小孩子才做选择,所以直接选择 trackers_all 这个包含所有服务器的列表。然后更改格式,tracker 之间用 ,
隔开,再添加到 Aria2 配置文件中,就像下面这样:
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.leechers-paradise.org:6969/announce,udp://tracker.opentrackr.org:1337/announce,udp
://9.rarbg.to:2710/announce,udp://9.rarbg.me:2710/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.openbittorrent.com:80/announc
e,udp://exodus.desync.com:6969/announce,udp://open.demonii.si:1337/announce,udp://tracker.tiny-vps.com:6969/announce
当然这种重复的事情,用脚本来做才是正确的方式:
bash <(curl -fsSL git.io/tracker.sh) cat
aria2.conf
)所在目录执行以下命令即可获取最新 tracker 列表并自动转换为 Aria2 可用格式添加到配置文件中。bash <(curl -fsSL git.io/tracker.sh)
/root/.aria2/aria2.conf
:bash <(curl -fsSL git.io/tracker.sh) "/root/.aria2/aria2.conf"
对于使用 Aria2 一键安装脚本的小伙伴,直接打开自动更新 BT-Tracker 功能即可。
由于 tracker 对 BT 下载起到客户端协调和调控的重要作用,所以一旦被封锁会严重影响 BT 下载。早年中国大陆对 tracker 的封锁,曾一度导致 BT 下载销声匿迹,这也促使了 DHT 网络的诞生。
DHT 网络由无数节点组成,当接触到一个节点,通过这个节点又能接触到更多的节点,接触的节点越多,你获取资源的能力就越强,下载的速度也就越快。即使在完全不连上 Tracker 服务器的情况下,也可以很好的下载。以下是 Aria2 配置文件中一些与 DHT 相关的功能选项:
# DHT(IPv4)文件
dht-file-path=/root/.aria2/dht.dat
# DHT(IPv6)文件
dht-file-path6=/root/.aria2/dht6.dat
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true
# DHT网络监听端口, 默认:6881-6999
dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
bt-enable-lpd=true
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
和其他 BT 下载工具一样,Aria2 有个 dht.dat
文件(开启 IPv6 还有个 dht6.dat
),里面记录了 DHT 节点信息。但是!文件本身是不存在的,需要手动创建。如果你在 Aria2 第一次运行的时候直接下载磁力链接或者冷门种子,因为文件内没有任何数据,就无法获取到 DHT 网络中的节点,所以就会遇到无法下载的情况。
第一个解决方案是找有数据 DHT 文件。比如 Aria2 完美配置中就有(所以使用 Aria2 一键安装脚本安装的小伙伴无需担心这个问题)。
第二个解决方案是生成 DHT 数据。找几个热门种子下载,比如 Ubuntu 镜像的种子。下载后做种几个小时,你会发现 dht.dat
从空文件变成有数据了。
经过以上的一波操作,也许下载并没有多么的快,但至少正常了。可能有些非常老而且冷门的资源不会一直有人在做种,所以还是会遇到无法下载的情况。如果把无法下载的种子放到百度或者 115 进行离线下载,你会看到那虚假的进度条比你正常用 BT 下热门资源还要快(毕竟资源已经在服务器上存在了,进度条只是给你一种下载速度快的幻觉)。现实就是这么的残酷,更残酷的最后还是会用 Aria2 加速下载或者转存到国际网盘。所以为什么不一开始就直接用网盘离线下载呢?
数据包镜像
和 udpxy
功能/插件)用于抓包和后续的使用,因为其功耗较低且价格比较便宜 Newifi D2 拼多多 100 以下就可以拿下因为不同地区网络环境不同,我这里是四川电信,但是可能在同一个省环境都会不一样,所以并不一定在其他地区可用。
设备 | 型号 | 软件 |
---|---|---|
光猫 | TEWA-500E | – |
主路由 | Newifi-D2 | Lean OpenWrt R9.6.1 |
AP | 腾达 AC6 | – |
无需电信 IPTV 机顶盒,也可在任何设备上通过 http 链接直接播放直播节目。下图分别为 PotPlayer(PC) 和 超级直播(Android) 播放节目效果图。
在 IPTV 中常见的两种用于播放直播节目的协议分别为 IGMP 和 RTSP,他们之间的差异如下。
协议 | 节目类型 | 可用时间 | 鉴权 |
---|---|---|---|
IGMP | 直播 | 长期 | 强制 |
RTSP | 直播/回放/点播 | 短期 | 非强制 |
网路群组管理协议(英语:Internet Group Management Protocol,缩写:IGMP)是用于管理网路协议多播组成员的一种通信协议,有时候我也会将其称为组播。
在电信这边,组播地址通常很少变化,但是很重要的是它只能看直播不能看回放。又因为它的地址是内网地址,所以你必须要获取到电信的内网IP才能正常播放。我比较倾向于使用组播地址,因为电视节目回放有啥可看的,一般都是爱奇艺什么的了,而且最重要的是它的地址很少变化,这样就给不会倒腾的家人减少了很多麻烦。
原理上组播和广播(给网络里的所有人都发送一个消息)有点相似,但是组播会划分一个更小的范围,并且这个范围里面设备的名单会同时由客户端和主机端进行维护,路由器会根据不同的组别来转发不同的数据。
下面假装这个网络里面,有 3组 人正在分别在看 3个 节目。
正在收看 CCTV-251 的朋友说,这太假了。我想看点正能量的、让人血脉喷张的。然后请求换到 正在播放 CCTV-1 的 igmp://239.93.22.133:9260
路由器随后听到了这位朋友的呼唤,然后就将它放进了 CCTV-1 的组里。
通过上面的例子你大致能了解到 IGMP 协议的工作原理,可以简单的总结为 IGMP 就是 一对多
,下面的一个例子则是和 IGMP 相反。
实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流,有时候我也会将其称为时移。
原理上 RTSP 和常见的 HTTP 协议比较相似,也就是 一对一
,下面这个图可以帮助你理解。
你在观看节目的时候,可以随意的后退暂停,也可以自己想看什么就看什么,不用加入别人的组,整个资源都被你一个人享用。就和你平时看爱奇艺,B站什么的没区别。
正如上面的介绍一样,RTSP 的主要特点就是可以时移,也就是可以拖动进度条。而且大部分地区的 RTSP 地址都是公网 IP,甚至还可以在获取到地址后,不需要任何授权都可以直接正常播放。
所以网络上流传的 IPTV 直播源基本都是 RTSP 地址。不过四川电信这边 RTSP 有鉴权,必须要以电信的内网 IP 访问才行。
同时又因为有部分套餐的 IPTV 是没有回放权限的,所以电信应该还需要验证是谁在播放,这就让观看它成为了比较麻烦的事情(不同地区情况不同,这里只针对我所在的地区)。
通过了我上面对 IGMP 和 RTSP 协议的介绍,相信你对他俩都有了一定的了解。接下来我将为你详细介绍本次教程的内容。
你可以通过点击右侧边栏,来快速跳跃到你需要的章节或查阅你当前的浏览进度。
本章节会介绍你所需要的硬件设备,在抓包和使用融合网络时不可避免的会使用到,生活中平时少见的设备。
IPTV与互联网融合,的主要设备也就是路由器了。一款合适的路由器,可以和电脑一起直接走通整个教程。对于本教程而言,一个能够刷 OpenWrt
或 Lede
同时还能安装 igmpproxy
和 udpxy
最好还支持 交换机端口镜像
就完美了。当然也有一些教程是通过 Padavan
来实现的,但是我个人没有尝试过,这里就不做评价了。
如果你目前没有具有此功能的路由器,我推荐你购买 新三 它还有其他的名字 新路由3、Newifi D2、Newifi 3、Newifi 3 D2。也都是同一款,得益于所谓的矿难,这款路由器目前淘宝、拼多多和转转之类的,100元以内都可以拿下,同时购买的时候推荐你加钱让卖家刷好 Breed
和我使用一样的硬件设备,这也能让你配置的时候少走一些弯路。
Breed 相当于 Android 里面的 Recovery,Windows 里面的 PE。可以让你在刷机的时候不会轻易翻车。
通过抓包获取 IPTV 的组播地址也是必不可少的一步。如果你的路由器没有 交换机端口镜像
的功能,你就需要淘宝单独购买一个 网络抓包工具,下图为 Amazon 搜索 Throwing Star LAN Tap
的外观图。
动手能力比较强的朋友,也可以参考恩山无线论坛的这个帖子小白的IPTV折腾教程(1)—0元DIY抓包神器,利用两根网线和4个水晶头就可以做出一个具有同样功能的抓包工具。
不过我还是比较推荐刷一个具有 交换机端口镜像
功能的固件,毕竟直接就可以上手用。如果你是比较热门的机型,比如斐讯又或是我之前说到的 Newifi D2 或是其他搭载了 MT7621 芯片的路由器,应该都不难在恩山找到具有该功能的固件。
下面列出了本次教程中所有需要的软件,我使用软件的版本,以及和下载链接。
设备 | 软件名 | 版本 | 下载地址 |
---|---|---|---|
PC | Wireshark | Portable 3.2.0 | Wireshark 官网 |
PC | Notepad++ | 7.8.2 | Notepad++ 官网 |
PC | Excel | Mondo 2016 x86 | Office Tool Plus |
PC | Xshell | 6.0.0032 | Netsarang 家庭/学校版 |
路由器 | OpenWRT | R9.6.1 | 橙子的个人博客/蓝奏云 |
路由器 | igmpproxy | 0.2.1-4 | 固件自带 |
路由器 | udpxy | 2016-09-18-53e4672a75..4-1 | 固件自带 |
路由器 | luci-app-udpxy | git-19.146.62144-fd6fdb2-1 | 固件自带 |
下面介绍了每个软件的用途。
软件名 | 用途 |
---|---|
Wireshark | 抓包获取 IPTV 播放地址 |
Notepad++ | 抓包后数据整理 |
Excel | 抓包后数据整理 |
Xshell | SSH连接路由器 |
OpenWRT | 路由器固件 |
igmpproxy | 转发IGMP流量到指定端口 |
udpxy | IGMP流量转HTTP |
首先将来自光猫的互联网和往常一样连接到路由器的 WAN 口,将 ITV 口连接到路由器的 LAN 4 口,将 IPTV 盒子连接到路由器的 LAN 3 口,最后将 LAN 1 口连接至电脑。
随后配置路由器的流量镜像功能,将接有 IPTV 盒子的 LAN 3 口设置为 数据包镜像源端口,将接有电脑的 LAN 1 口设置为 数据包镜像监听端口。其他 VLAN 设置无需改动。
保存并应用设置后,即可在电脑上启动 Wireshark 并监听以太网接口,随后启动 IPTV 盒子。
启动 IPTV 盒子后,应不停的有数据显示在窗口中。然后使用 IPTV 盒子遥控器,进入直播随便播放一个节目,等节目可以正常播放的时候,即可在 Wireshark 中停止捕获。同时也可关闭 IPTV 盒子,接下来就是分析数据了。
如果你没有看到任何数据跳动,或者是特别少,应注意是否端口插错,或者是在设置流量镜像的地方有错。
因为不同地区的数据样式差异较大,我这里是四川电信,其他地区可供参考
在过滤器栏输入
1 | http.request.uri contains “frameset_builder.jsp” |
右键第一个请求,追踪流 – HTTP 流
再弹出的新窗口中查找
1 | igmp:// |
如果你找到了类似下图 igmp://239.93.22.133:9260
的连接,那么恭喜你,你的数据抓包已经完成了最重要的定位了!(不难发现旁边也获取到了 rtsp://
开头的时移地址)
单击连接,主窗口就会自动定位到该请求。
单击展开该请求的完整内容,查看里面的内容是不是含有 igmp://
之类的重要数据。
右键 Line-based text data 导出分组字节流,随便取个名字保存到你能找到的地方。
用 notepad++ 打开,查看是否显示正常(前几行都是回车,会一片空白往后滑一点)。
如果你在窗口中一个数据都未获取到,那么请检查数据镜像设置或网线位置是否有错。
如果你是四川省,请仔细检查是不是,在过滤的时候复制错了或漏了内容。
如果你非四川省,可以在过滤器中输入
1 | http |
进行检索,一条一条的看,里面总会有 igmp://
之类获取节目单的数据(我也是这样找出来的)。
开始格式化之前,建议保存好原始文件。
替换完毕后可以将名字带有 PIP 的删除,这是用于机顶盒画中画功能的,说白了就是降低了分辨率的,我们就留下正常的和高清的就行了。
此格式文件可以在 PC 中直接使用 VLC media player 和 PotPlayer 打开并播放
查找目标
1 | .*ChannelName=”(.*)”,UserChannelID=”(.*)”,ChannelURL=”igmp://(.*)”,TimeShift=.* |
替换为
1 | #EXTINF:-1, \1\r\nhttp://192.168.10.1:8888/udp/\3 |
将文档中被格式化了的数据,复制到新文档,并在文档首行写入
1 | #EXTM3U |
处理完毕后效果如图,最后将文件另存为 .m3u8 即可。
此文件可以在 Android 端的超级直播使用,电脑打开 在软件里面按返回时提示的网址,可以将自定义源上传至该软件。
查找目标
1 | .*ChannelName=”(.*)”,UserChannelID=”(.*)”,ChannelURL=”igmp://(.*)”,TimeShift=.* |
替换为
1 | \1,http://192.168.10.1:8888/udp/\3 |
再次查找目标,删除空白行
1 | \n\s*\r |
替换为空白
全选改文本所有内容后复制,在顶部 编码 – 编码字符集 – 中文 – GB2312,确认切换到该字符集。然后删除文本所有内容,并粘贴。最后将文件保存为 txt 即可。
超级直播中文本编码格式必须为 GB2312 否则中文会乱码
处理完毕后效果如图
四川电信是 DHCP 获取,我在网上看很多地方都是 PPPOE 所以用户名和密码你们就需要自己翻翻 IPTV 的设置拉~
这边也会使用到抓包的数据,应该就是前几个了,找到 Dynamic Host Configuration Protocol (Request)
请求,展开 Option: (60) Vendor class identifier
和Option: (12) Host Name
以及 Client MAC address
。都需要右键 – 复制 – 值 。
如果你没有找到 DHCP 的数据包,可以通过 IPTV 盒子底部的贴纸查看。我这款盒子,最后一个就是 Option: (12) Host Name
当然了 MAC 地址上面也有,而 Option: (60) Vendor class identifier
我已经在上图给你了,就是 SCITV
。
接下来就开始路由器的设置了。
首先进入路由器设置 – 网络 – 交换机,将之前用于抓包的 数据包镜像 功能关掉。随后将插有 ITV 口的 LAN 4 在 VLAN 1 中设置为 untagged
。添加一个 VLAN 3 ,将 CPU (eth0) 设置为 tagged
,然后将 VLAN 3 的 LAN 4 设置为 untagged
。设置完毕后,效果如下图。
进入路由器设置 – 网络 – 接口 – 添加新接口。命名为 IPTV
注意全部大写,接口协议为 DHCP 客户端
包括接口 VLAN:eth0.3
。设置如下图。
然后设置端口的 请求 DHCP 时发送的主机名 对应的就是之前获取的 Option: (12) Host Name
,以及高级设置里面的 请求 DHCP 时发送的 Vendor Class 选项 也就是之前获取的 Option: (60) Vendor class identifier
即 SCITV
,最后是 重设 MAC 地址 填入 Client MAC address
也就是你 IPTV 盒子的 MAC 地址。
还有不要勾选 使用内置的 IPv6 管理,使用网关跃点为 20 。
保存并应用设置后,再进入你的 WAN 接口设置,将它的 网络跃点设置为 10,否则你会无法正常使用互联网。
进行到这里,你的 IPTV 接口应该就可以正常的获取到 10
开头的内网 IP 了。如果你不是四川的朋友,那么你地区的运营商可能是 PPPOE 验证或验证逻辑与我这里不同,如果你是四川的朋友,那么请你检查 之前抓包或者是在机顶盒上面看到的 Option: (12) Host Name
以及 Option: (60) Vendor class identifier
和 MAC 地址是否填写正确。如果你是通过抓包获取的数据,那应该不会有错,如果你是抄的机顶盒上面的,那么可能是因为你所在的地区与我的验证逻辑不同。
所以我强烈建议,还是通过抓包来分析 IPTV 盒子获得内网 IP 的全过程,因为不管你是 PPPOE 还是 DHCP 它都可以分析出来。
修改配置文件时需要使用 SSH 连接到路由器进行修改,进入路由器设置 – 系统 – 管理权,在接口 lan 下设置端口为 22,同时打开 密码验证和允许 root 用户凭密码登录。
下载 Xshell https://www.netsarang.com/zh/free-for-home-school/ ,官网提供了免费的供家庭和学校使用的版本,足够本次教程所用。
新建连接,名称随意,主机填上路由器的 IP。点击左侧连接中的用户身份验证,将方法设置为 Password 用户名为 root 密码则为登录 Web 端后台时的密码,我提供的固件默认是 password
。
如果你的路由器使用的我提供的固件则无需安装,因为固件是自带该软件包的。
我建议在安装之前,在 Web 端后台的系统 – 备份/升级 中备份当前配置文件。因为我尝试了多个固件,在安装了 udpxy 后 Web 端就会无法正常使用,有很多报错。只有恢复到出厂设置才恢复正常。最后找到了一个自带 udpxy 的固件才解决我的问题。
使用 Xshell 连接到路由器后执行以下命令。
1 | opkg update && opkg install igmpproxy udpxy luci-app-udpxy |
opkg update
是用来更新软件列表的,因为大陆对 OpenWrt 软件源地址连通性不佳,所以可能需要等很久或者是多次尝试。
查看命令返回的结果或查看系统 – 软件包中的已安装软件包中是否存在 igmpproxy
udpxy
luci-app-udpxy
来判断是否安装成功。
关于 igmpproxy 它主要是将所有来自 lan 的 IGMP 数据都传到 IPTV 接口去,为了防止组播的 udp 数据在 lan 里面乱串,影响网络效率。但是我这里在 lan 里面是无法播放 igmp://
地址的数据的,我也不清楚是什么情况。而且据恩山网友测试,OpenWrt 的 igmpproxy 是失效的,如果有人在 lan 里面观看组播地址视频或者是使用 IPTV 盒子,都会导致局域网内的组播风暴,会导致网络堵塞。所以主要是后面的 udpxy 在起作用。
执行以下命令,一定要复制全一起粘贴进去然后再回车执行。
1 2 3 4 5 6 7 8 9 10 11 12 | echo “config igmpproxy option quickleave 1 config phyint option network IPTV option direction upstream list altnet 0.0.0.0/0 config phyint option network lan option zone lan option direction downstream” > /etc/config/igmpproxy |
在路由器 Web 端设置 – 服务 – udpxy 中,勾选启动、Respawn、状态。将端口设置为 8888
,将 Source IP/Interface 设置为 IPTV 接口的 ifname,也就是在路由器 Web 端设置 – 网络 – 接口 中 IPTV 接口图标下方的小字。在我这里为 eth0.3
保存并应用后,打开 http://路由器IP:8888/status 查看 udpxy 运行是否正常。当你在播放视频的时候,这个页面也会显示正在播放客户端的 IP 与它的实时流量。
然后你就可以在 PotPlayer 和 VLC media player 播放之前处理好的连接了,可以直接打开 M3U8 播放列表,也可以播放一个单独的地址。
例如你获取的地址为 igmp://239.93.22.6:6666
那么使用 udpxy 转换后的地址为 http://192.168.10.1:8888/udp/239.93.22.6:6666
如果你仍然无法播放,请将下面的防火墙规则添加进 /etc/config/firewall
如果你会使用 vim 那么直接在 Xshell 里面修改即可,如果你不会可以在 Xshell 窗口中点击 新建文本传输(Ctrl+Alt+F),将该文本下载到本地使用 notepad++ 进行修改,再上传上去。请注意你的防火墙配置可能已经存在,请你仔细的排查每一个设置项。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | config rule option name ‘Allow-IGMP’ option target ‘ACCEPT’ option family ‘ipv4’ option src ‘iptv’ option proto ‘IGMP’ config rule option name ‘Allow-UDP-udpxy’ option target ‘ACCEPT’ option src ‘iptv’ option proto ‘udp’ option dest_ip ‘224.0.0.0/4’ config rule option name ‘Allow-UDP-igmpproxy’ option target ‘ACCEPT’ option family ‘ipv4’ option src ‘iptv’ option proto ‘udp’ option dest ‘lan’ option dest_ip ‘224.0.0.0/4’ |
首先需要公网 IP,你可以在 在路由器 Web 端设置 – 网络 – 接口中,查看 WAN 获得的 IP 是否与你在 https://ip.sb/ 看到的 IP 一致。如果不一致的话,可以向电信人工客服反映「我需要公网 IP」即可。
在路由器 Web 端设置 – 网络 – 防火墙 – 端口转发 中,添加协议为 tcp,外部区域为 wan,外部端口为 8888,内部 IP 地址为 192.168.10.1,内部端口为 8888 的规则即可。
那么你在外要播放的话,只需要把路由器的 IP 地址换为你的公网 IP 即可。
例如你的本地播放地址为 http://192.168.10.1:8888/udp/239.93.22.6:6666
那么当你的公网 IP 为 125.60.90.40
时
你的互联网播放地址则为 http://125.60.90.40:8888/udp/239.93.22.6:6666
因为公网 IP 都在变,你可以使用 DDNS 也就是 动态 DNS 使用域名来防火,你可以使用路由器内自带的服务商。如果你和我一样将域名放置于 DNSPod 管理,也可以使用我制作的 DdnsWithDnspod 使用一个子域名来专供 IPTV 的播放。
首先非常感谢各位前辈,我也是通过阅读现有的教程总结出来的。本文用了接近 5000 字,详细的介绍了有关 IPTV 与互联网的融合,希望能够对需要的朋友有帮助。因为本人能力有限,文中难免有一些问题也希望有发现的朋友能够及时的指出,我将感激不尽。
恩山无线论坛@footlog – K2P/K2 padavan双线接入,宽带+IPTV,udpxy+xupnpd详细设置
恩山无线论坛@lcsuper – 小白的IPTV折腾教程(3)—双网融合、IPTV共享
恩山无线论坛@kangtao022 – 最新四川南充电信IPTV组播地址,及整理出地址列表的方法!
恩山无线论坛@橙子_MAX – 【附固件】全网首发,新三OpenWRT路由器IPTV内网融合视频教程
橙子的个人博客 – IPTV内网融合,实现任意设备观看IPTV
恩山无线论坛@angelkyo – 四川电信DHCP抓包能获取到IP,但是抓不到option60信息
1. 首先,打开群晖的Docker套件,然后点击“注册表”,并且搜索“jellyfin”,然后双击下载该镜像。
接下来会提示版本,我们默认选择“latest”就可以啦
2. 待镜像下载的功夫,我们先回到群晖的 File Station 在docker文件夹下新建“jellyfin”目录。
此目录建立的目的是为了后续将此文件夹装载到我们的容器中,我们jellyfin后续的一些缓存呀、配置呀、封面呀等等东西都会储存在这个文件夹中。
另外,下图所示的video文件夹是我们用于存放电影、剧集、音乐等源文件的地方,下面的步骤中也会装载到我们的容器中的。(当然文件夹的名字看你喜好,这里只做演示)
3. 接下来回到Docker中,单击“映像”,并双击我们的jellyfin映像。然后点击高级设置。
4. 映像的 [端口设置] 选项卡设置如下图:
这里的8096端口和8920端口,分别是用于jellyfin的http和https访问使用。我们演示用默认的端口,当然你也可以自定义。
5. 映像的 [卷] 选项卡,我们点击“添加文件夹”,并入下图设置。
这个步骤就是我们之前说的,将NAS的文件夹装载到容器中,video文件夹是用作媒体的储存,docker/jellyfin 指定了两次,是因为配置文件和缓存我们放在一起就可以啦。
6. 映像的 [高级设置] 选项卡,勾选“启动自动重新启动”
7. 上面的所有步骤都搞定之后,我们勾选“向导完成后运行此容器”,并点击“应用”
恭喜你,至此我们的jellyfin安装过程中的群晖NAS配置部分就已经全部完成。如下图所示,我们已经可以看到容器已经在运行啦。
接下来,我们通过通过浏览器打开:内网的IP+8096端口 没错你看到的就是Jellyfin的初始化页面。我们按照我下图提示的步骤一步一步设置,并且一步一步点击“Next”就可以啦。过程很简单照做即可。
经过上面一顿猛如虎的操作之后,初始化也就完成了。接下来继续
1. 点击右上角的图标,接着点击“媒体库”,点击“添加媒体库” 。
2. 选择类容类型,这里根据你的片源的类型。选择语言和国家。最后点击那个文件夹的+号 来绑定媒体文件夹。
3. 在弹出的页面中,选择/video 就可以啦。记得这个文件夹不?没错就是我们上面步骤中装载到映像里的哟~别搞错
4. 回到主页,就可以看到你刚刚添加的媒体库了。但是如果里面还没有看到影片?那么确定你把影片已经放到NAS的video文件夹中了。如果还是没看到?不要紧,我们点击“刷新元数据”就可以啦。
5. 电影是加载出来了,但是没有封面怎么办?点击影片的“识别”,并录入电影名字就可以选择封面咯。
最后~以下是播放页面。各种浏览器都可以愉快的播放。另外安卓有客户端。苹果嘛再等等。
进入群晖,打开Docker
打开人人影视web界面,输入密码(默认:123456)
最后如果群晖设置了防火墙,记得打开防火墙端口,如果想要外网访问,需要路由器端口映射。
项目地址:https://github.com/oldiy/youtube-dl-webui-cn
下载地址:https://github.com/oldiy/youtube-dl-webui-cn/archive/master.zip
群晖安装WebStation
之后会多出一个web文件夹,下载后上面的项目,解压放到web文件夹里
打开 webstation,如图设置
新建虚拟主机,如图设置
修改配置文件,如图设置
打开网页 http://<群晖IP>:260 即可下载
本项目可以放到任何linux服务器上使用,如果遇到不能下载问题,直接更新目录下的youtube-dl文件即可。