前言
前几天在小黄鱼搞了个4005U的小主机,直接刷了openwrt,网卡为AR9382,可惜找不到无线网卡驱动,于是拆开想看下换块网卡,可惜和我台式机的不兼容,比台式机的小了一半,恰巧发现背板上留了个stata支架,貌似还可以扩充个stata硬盘,然后看了下主板的接口,群里的大佬说买根ph2.0的线转接成硬盘的电源线就行,不过没有闲置的硬盘,感觉买来也大概率闲置,就不管了。
后来在折腾openwrt过程中知道了网心云容器魔方这个docker项目,就是把自己闲置的硬盘和宽带共享给别人进行边缘计算,然后就试着布置了下,收益有点低啊,感觉我来晚了,看贴吧说以前高。但是单口小主机真不方便,于是买了usb转网卡的接线,想扩充一个网口,然后又下单了一个可能兼容的无线网卡(有点后悔,应该加点钱买多网口小主机的),然后某次看到这个stata固态,咦这价格还挺香,买来挂网心云,假如每天收入1块5,那也只要半年就白得一块固态硬盘,真香,于是开搞,买ph2.0的线,但是看介绍说接线注意电压,我这没电压表,于是想着能不能用arduino测电压,于是找到了这个帖子:使用arduino测量电压的超级简单的方法
/*
*使用俩个相同的电阻串联,并将其中一个电阻的两端分别接入arduino的A0接口与GND接口实现电压的测量
*注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
*注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
*注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
*注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
*注意所测的电压不能超过"串联电阻数量"乘"5V",否则可能会烧掉!!!!!!!!!!!!
*/
#define BV 0.0048875855327468 //analog将5V分成了1023个单位——5/1023
#define num 2; //串联所接的电阻的数量
int v; //定义analog所测得的数字(1~1023)
long double lv; //定义所测电阻的电压
double zv; //定义整个电路的电压
void setup() {
Serial.begin(9600);
pinMode(A0,INPUT);
}
void loop() {
v = analogRead(A0);
lv = v * BV;
zv = lv * num; //因为两个电阻是一样的大小,所以直接相乘就可以得到所测电压的大小
Serial.println(zv);
}
后来线到了,实际也没测,想着应该只要接口对应,就不会有啥问题,于是直接插了上去,能用,就是网卡,还是找不到能用的驱动,也懒得退了,先不管了,安装网心云docker容器实例代码
部署容器魔方
基于虚拟网卡的多开
docker run -d --name=wxedge --restart=always --privileged --net=host --tmpfs /run --tmpfs /tmp -v /media/wxedge_storage:/storage:rw registry.hub.docker.com/onething1/wxedge:latest
然后在浏览器输入宿主机ip:18888进入后台管理界面
必选参数说明:
–privileged 必须打开(爱快docker不支持)。
–net 目前只支持host(推荐)和macvlan两种网络模式(不熟悉docker和网络知识的用户不要尝试macvlan,非常复杂!)。
“磁盘路径”是磁盘的目录,请根据自己实际磁盘目录更改,必须挂载到容器内的/storage目录,推荐磁盘是ext4文件系统,至少需要50G以上的空间,建议是固态硬盘。
可选参数说明(建议新手都不要设置):
-e NIC=eth0 有多网卡多线路时,可以使用该参数指定路由网卡,不配置会自动选默认路由网卡,如果是openwrt系统,可以使用-e NIC=br-lan,业务申请到和局域网同一个网段的IP。
-e REC=false 第一次安装设置为false时,不会启动默认任务,默认为true,仅第一次安装有效。
-e LISTEN_ADDR=”0.0.0.0:28888″ 支持设置绑定页面的监听地址和端口,监听全地址设置-e LISTEN_ADDR=”:28888″,默认监听全地址18888端口。多开容器也可以参考用该参数,比如容器A使用参数-e LISTEN_ADDR=”:18888″,容器B使用参数 -e LISTEN_ADDR=”:28888″(已经实现同一业务可多次添加,不建议多开容器)
-v 磁盘路径:/var/lib/containerd 如果系统盘较小时,可以增加该参数修改安装路径,注意“磁盘路径”修改成自己的磁盘目录。
如果想安装第二个同样的容器实例,可以使用macvlan网络的创建方法,首先创建网络环境
docker network create -d macvlan --subnet=192.168.1.199/24 --gateway=192.168.1.1 -o parent=eth0 macvlan
参数含义:
- –subnet=192.168.1.99/24 网段,这个地方要修改成你创建docker的设备的IP段,比如设备IP是192.168.1.200,那这个地方参数就是192.168.1.199
- –gateway=192.168.1.1 网关,这个地方要修改成你创建docker的设备的网关
- -o parent=etho 这个地方vmbr0要修改成你设备中使用的网卡名称
- 其他参数默认
创建好macvlan网络之后
docker run -d --name=wxedge3 --restart=always --privileged --net=macvlan --ip=192.168.1.88 --tmpfs /run --tmpfs /tmp -v /docker/wxedge_storage3:/storage:rw registry.hub.docker.com/onething1/wxedge:latest
- #name=wxedge2 因为是第二个,所以添加数字2
- #ip=192.168.3.66 macvlan网络可以指定容器IP , 这里修改成你要指定的IP,建议指定,这样方便web管理。
- #/media/wxedge_storage2 因为是第二个容器, 所以缓存目录要添加数字2
基于host改端口的多开
第一个容器命令
docker run -d --name=wxedge1 --restart=always --privileged --net=host --tmpfs /run --tmpfs /tmp -e REC=false -v /docker/wxedge_storage1:/storage:rw registry.hub.docker.com/onething1/wxedge:latest
默认端口18888
第二个容器命令
docker run -d --name=wxedge5 --restart=always --privileged --net=host -e LISTEN_ADDR="192.168.1.200:28888" --tmpfs /run --tmpfs /tmp -e REC=false -v /mnt/sdb1/wxedge_storage4:/storage:rw registry.hub.docker.com/onething1/wxedge:latest
改端口为28888
查看业务信息文件
创建容器时挂载的目录/.onething_data/task/你的cg任务名/logs/server.log,cg任务名我这边是ba开头的,不好区分的话可以手动加几个,根据后缀判断,同一业务第n个就是_n
网络相关
修改docker0默认网段
docker0 默认网段和我的校园网认证页面的网段冲突,导致安装docker后无法认证,从而无法上网,所以可以修改docker0网段。
解决办法:改路由比较办法,可以一开始就将docker配置的bip改成169.254.0.1/24,可以避免冲突。在daemon配置文件里加个”bip”:“169.254.0.1/24”,重启docker就可以了
[root@st-dev6 ~]# vim /etc/docker/daemon.json
{
"bip":"169.254.0.1/24"
}
NAT类型检测
NAT全称“Network Address Translation”,意思是“网络地址转换”。通过NAT可以让局域网内的众多主机使用一个公网IP访问Internet。由于IPV4紧缺,家用网络大部分都在NAT环境中。目前NAT分为4个类型:NAT1、NAT2、NAT3、NAT4,具体的:
NAT1:Full Cone NAT(全锥形NAT);
NAT2:Address Restricted Cone NAT(受限锥型NAT);
NAT3:Port Restricted Cone NAT(端口受限锥型NAT);
NAT4:Symmetric NAT(对称型NAT);
从NAT1到NAT4限制越多,而家用网络最常见的是NAT3和NAT4。怎么测试网络nat类型呢?我推荐2个实用工具:
Windows系统可以使用nattypetester,如果软件默认的STUN server地址不可用,可以填写国内小米的服务器stun.miwifi.com。点击Test按钮然后在RFC 3489可以看到NAT类型数据。
Linux可以使用pystun3(如果是python2环境,可使用pystun),pystun3基于python可用pip安装:
pip install pystun3
pystun3
然后即可返回NAT类型结果:
我把pystun3安装到我的红米2小主机上,只要连上局域网wifi,检测非常方便。
NAT类型主要影响游戏延时(数据转发次数越多延时越高,网络波动越明显),和一些远程软件的数据连接。一般来说NAT3还能接受,NAT4可以换网络服务商了。
ubuntu修改dns设置让应用使用全锥网络
在使用ubuntu过程中,我发现,即使使用以上方法检测到网络类型为full-nat,但是部署docker网心云后网络类型变成了未知,所以前期我的docker容器魔方一般都是部署在openwrt里,这样感觉多了很多不需要的动能,并且使用也不方便,后来经过不断的探索,终于有人推荐了一篇文章:
,于是按照文章指导,成功解决了问题,感谢这位作者。问题:
ubuntu18.04LTS搭建k8s coredns组件报错
因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址造成循环引用
手动修改无果,每次重启依旧会覆盖
原因:
ubuntu17.0之后特有,systemd-resolvd服务会一直覆盖
解决办法:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo apt install unbound
sudo rm -rf /etc/resolv.conf
sudo vim /etc/NetworkManager/NetworkManager.conf
在[main]
下面添加
dns=unbound
将dns服务替换为unbound
reboot
重启电脑即可,开机查看resolve.conf发现nameserver自动配置
WIN10/WIN11开启UPNP
- 1、按下“Win+R”打开运行,输入“services.msc”点击确定打开“服务”;
- 2、双击打开“Funtion Discovery Resource Publication”,将其启动类型修改为“自动”,点击应用,点击启用,点击确定;
- 3、按照此方法按顺序将“SSDP Discovery Service”、“UPnP Device Host”服务进行设置即可!
UBUNTU一直是这样
看看怎么解决未知网络的问题
6666666
111113人生巅峰
学习一下
学习一下,我也遇到NAT未知的问题
看看怎么解决未知网络的问题
看看怎么解决未知网络的问题
看看怎么解决未知网络的问题
太厉害了