异地组网测试

构建思路:

!!!! tailscale 能访问网段需要 添加 –accept-routes 才能访问,wireguard的route添加无问题,所以之前想的端口转发的方式是可行的,记得ipforward.

前置断电和重启

设置bios

配置内容

wireguard

南通这边:构建一个私有网络,配置openwrt(客户端)。配置wireguard服务端(e2)的机子。

用4G网模拟远程连接。

远程的openwrt也是用wg,达到内网直接访问的结果。(通过服务端中转)

zerotier

配置moon节点,只能dmz。远程的机器也可以作为路由节点

nps

建议dmz机器。op作为客户端,而且这个不定port的。

frps

建议dmz机器,偷懒可以不配

windows 或者linux的todesk,向日葵

保证至少三台?

配置完成后备份

这个IP会出现变化,所以要在每个部分用saltstack或者ansible-ssh(操作op)进行,

这个直接用nomad调用脚本运行。如果是远端,上传特定值或者saltstack执行。

如果是两地异地,都有ipv6的地址的话,可以直接用zerotier,或者wg加域名就好了。

可以完全挂机的版本 http://xue.798ka.cn/vps.html?class=1

注意 justhost也就是这个价钱,200M的话价格多些,就是网络有些不好。

image-20220523194600380

image-20220523195024859

https://idc.hongchen.gold/vps.html?class=30 NAT的价格

zerotier

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

配置zerotier

然后添加值到路由上

nps

安装下载

 curl -O https://ghproxy.com/https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz

drop 80 和443 端口

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 80 -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 443 -j DROP
###/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 22 -j DROP
不能drop 22 ,不然内网都连不上了。。
/sbin/iptables -D INPUT -i eth0 -p tcp --destination-port 22 -j DROP
这个Append 改成Delete删除上一条的命令就可以了。

需要drop 端口,

需要save。

更新,不需要Drop,外网自动将80段口和443和常见的端口屏蔽了。

配置op的ddns

需要额外安装包

image-20220523230422837

其他如dnspod,digitalocean也是这样。?? 不对看到已经安装了。

image-20220523231714888

配置不成功的原因是需要读取对应域名的值,由于使用的是v6,然后配置的dns是0.2,将ipv6的去掉了,于是一直无法获取值。

image-20220523234303854

v6也要适配很多地方。

!!! 配置,需要1.域名处使用@分割域名。

2.使用Cloudflare的GlobalKey,不能使用apitoken,权限较高。

3.需要通过smartDNS最快获取可用的DNS。DNS的分发速度很慢,cf的只有1.0.0.1和外网的8.8.8.8快,国内的速度慢,223.5.5.5慢很多,119.29.29.29好些。

dns的问题

发现电信自带的dns,国外的域名请求不会更新,只有指定服务器才会进行更新。

image-20220524001356109

所以熟悉op的dns,或者相关dns

在微服务架构中,服务注册的方式其实大体上也只有两种,一种是使用 Zookeeper 和 etcd 等配置管理中心,另一种是使用 DNS 服务,比如说 Kubernetes 中的 CoreDNS 服务。

使用 DNS 在集群中做服务发现其实是一件比较容易的事情,这主要是因为绝大多数的计算机上都会安装 DNS 服务,所以这其实就是一种内置的、默认的服务发现方式,不过使用 DNS 做服务发现也会有一些问题,因为在默认情况下 DNS 记录的失效时间是 600s,这对于集群来讲其实并不是一个可以接受的时间,在实践中我们往往会启动单独的 DNS 服务满足服务发现的需求。

image-20220524085802704

设置了双栈,应该是查询salt.zte 直接走了ipv6分配的dns。

注意上图,设置的Global 为空,所以默认就走了fe80的网络。

image-20220524094800996

其他的机子Global都是设定了192.168.0.2的参数。

op上的dnsmaq

可以设定指定的dns只走这个namesever

server=/baidu.com/8.8.8.8#53
server=/taobao.com/114.114.114.114#53
server=/qq.com/8.8.4.4#53
server=/google.com/127.0.0.1#5300
address=/msy.com/192.168.0.1

设置ubuntu的默认resolver

就是将resolverctl的Gobal值换成自己需要的但是,eth0的dns没有换。

  1. 更新/etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=8.8.4.4
  1. 重启系统解决:service systemd-resolved restart
  2. systemd-resolve --status

输出应如下所示:

Global
         DNS Servers: 1.1.1.1
                      8.8.8.8
...

image-20220524101806413

还有systemd-resolved

在systemd-resolved中,好像v6的值只走v6的dns。。

dns的解析污染问题

image-20220524132231924

强制将dns的解析走代理。。。如果代理失效,那么就是外网直接无法访问。

smartDNS

好像是返回查询结果中访问速度最快的IP?

image-20220524141652166

DNS分流。

双栈

如果国外的直接访问速度慢,那就快速转成v4,达到快速访问的目的。

  1. IPv4、IPv6 双栈 IP 优选功能如何使用?

    目前 IPv6 已经开始普及,但 IPv6 网络在速度上,某些情况下还不如 IPv4。为在双栈网络下获得较好的体验,SmartDNS 提供来双栈IP优选机制,同一个域名,若 IPv4 的速度远快与 IPv6,那么 SmartDNS 就会阻止IPv6的解析、使用 IPv4 访问。可在配置文件中通过设置 dualstack-ip-selection yes 启用此功能,通过 dualstack-ip-selection-threshold [time] 来修改阈值。如果要完全禁止 IPv6 AAAA记录解析,可设置 force-AAAA-SOA yes

image-20220524141936869

我选择的方案是:以adguard-home接管53号端口的UDP请求;把dnsmasq置入adguard中作为私域服务器处理内网有关事务,在adguard中设置上游服务器为smartdns以处理外网事务;在smartdns中设置多个(10个左右)上流公共DNS服务器(其中有UDP方式的,TCP的,DoH, DoT的),并且分组处理国内外的域名,达到高效目的。设置科学软件不对域名解析做特殊处理,全交给路由器的UDP53号口(它以为是dnsmasq,实际是adguardhome)处理。 这么选择的好处是,每个APP都能发挥它们的功能,客户机的DNS请求必须经过以上的APP处理,不能绕过,但也不会重复处理。坏处是,以上APP任一个掉链子,就会造成DNS请求无法完成,一般表现为上不了网。

https://www.right.com.cn/forum/thread-8180876-1-1.html

image-20220524155251940

分组在自定义设置里面,bind就是将第一个服务器分组成china,然后填写pw上面的分组

image-20220524162441011

使用bypass信息被更新了。。替换成了dnsmasq,可能bypass的smartdns也是内部的和op上的不兼容。

image-20220524162645619

走了5553端口,和op上的smartdns不同。

image-20220524163838098

新添加的v6,smartdns只是将v6的域名直解析v6的请求。添加的内容需要配置选项组china或者guowai,这里只解析国内的ipv6值,所以只是用china解析。

image-20220524163947260

测试了国外的ipv6的值,好像dns直接不返回值。(这个ip要是国内的ip),

  • 本帖的核心很简单,SmartDNS 分两组,一组上游全是国内 DNS,一组上游全是 DoT 或 DoH 的国外 DNS,分别作为富强软件的内外上游,懂得这个核心逻辑,自己捣鼓不会出大错的,我也可能有疏漏,不要完全相信我说的。
smartdns 在国外的访问

这里注意,默认情况下,smartdns添加内容只到5335(6053)第一个服务器端口,所以只要是国内网段,完全可以只用dnsmasq的53端口访问。

第二服务器是国外服务器端口,解析国外的域名时(指ip为国外),使用7053端口。

然而国外的访问大多数都是用v4代理,而且目前国外访问用的是单独的bypass的域名解析,所以思路可以是,指定域名内的几个值为白名单,

!!! 停用bypass后,域名解析可以访问AAAA,说明bypass将smartdns的流量都劫持了。包括国内的v6的域名。

如果添加不走代理的域名,就不会走代理,例如添加ipapi.co

dig xxx AAAA就成功了。

image-20220524172734202

关闭Bypass前后netstat端口和pid对比,说明bypass是单独的smart。

查看配置文件发现,每次开启的时候Bypass和smartdns都会重写ps后指定的配置文件,而且文件内容是不同的配置。

image-20220524184443958

@@@@ ChinaDNS-NG和相关的会强制劫持53端口。

zerotier的更新

可以用consul的key-value来作为分发机制?

考虑nacos作dns的分发。其实甚至基本的值可以用用TXT的dns来代替。。。

CPU挂了是不是动了机子。。

image-20220524234352295

nomad的UI

nomad的ui没有认证,直接传到公网上去了。不安全,还是先关了吧

如果用orbit

可能需要和zerotier外主机连接判断。更好的方式是分发moons文件。单独生成一个文件夹,然后oss上传上去,接着op上和其他的客户端获取这个文件夹。

op的分发

这里其实没有必要用saltstack或者ansible,因为传递方式可以有很多种,这里,直接写python或shell脚本完成部署就可以了。文件传递可用rclone。。

image-20220525163929264

op的关系,手动配置rclone的conf文件,然后写脚本获取moons。

adhome 直接和bypass在一起

ipv6设置成允许,就没问题了。但是这样国外的网站访问v6字段,和预期不符合。

!!!! bypass 重启前需要先关闭adhome,然后换连接端口。

再开,显示ChinaNG冲突。 主要因为chinaNG会劫持53端口,adhome也会劫持53端口

使用oss

注意,生成一个用户,然后再单一bucket下授权,完全控制,rclone访问的时候必须要强制使用对象的桶,才能不报错。

image-20220525183045751

image-20220525184018506

DMZ

DMZ只针对ipv4,ipv6不走这个通道,然后最高上传60M,哪怕是转发,用iperf3也能跑满,

全双工是指两边同时收发可以跑满,所以iperf3,转发是全部跑满,60Mbps。

说明家里的线应该是5e的线,所以速度只能上下行合起来千兆。

就用这个100M网口的做DMZ

image-20220527073744640

有设置变动了wan口的入站数据,居然是拒绝,不知道哪个应用搞得。,转为接受后变成FullCone NAT。