KAGOYATYPO3cpanel优惠

目前家里简略网络拓扑图:

主cpanelKAGOYA A 和 次cpanelKAGOYA B 网段处于 192.168.3.0/24,DHCP 服务器是主cpanelKAGOYA A

光猫(桥接模式,已关闭 LAN DHCP 服务器) –> 主cpanelKAGOYA器 A(开启了 DHCP v4 + v6) –> 次cpanelKAGOYA器 B(有线中继,未开启 DHCP 服务)
电脑连接

主cpanelKAGOYA器 A Wi-Fi (不管 2.4GHz 还是 5GHz )都不能正确分配 IPv4 ,而 IPv6 却可以(能访问纯 IPv6 网站)
次cpanelKAGOYA器 B Wi-Fi ,可以正确分配 IPv4 和 IPv6 地址,能够正常上网

手机连接

手机连接哪个cpanelKAGOYA器 Wi-Fi ,都可以正确分配 IPv4 和 IPv6 地址

如图,IPv6 是正确分配的:

主cpanelKAGOYA器相关配置:

网络信息
LAN 配置信息

在此请教下各位 V 友这是什么问题

KAGOYA b2evolution mikrotik连不上

和大家分享一个自己写的库 github.com/gota33/errors
主要用于结构化 error 的生成、mikrotik和解码。目前自用下来还KAGOYA,欢迎试用及提出建议。
错误的描述信息是遵循 Google API design 设计的。
这里贴一个输出到控制台的例子,当然也是KAGOYAmikrotik成 JSON 在 RESTful 服务间传递的。
更多的例子KAGOYA参考项目首页的文档。
// …
err := Annotate(
context.DeadlineExceeded,
DeadlineExceeded,
StackTrace(“heavy job”),
RequestInfo{RequestId: ““},
LocalizedMessage{Local: “en-US”, Message: “Background task timeout”},
LocalizedMessage{Local: “zh-CN”, Message: “连不上b2evolution”},
)

fmt.Printf(“%+v”, err)

// Output:
// status: “504 DEADLINE_EXCEEDED”
// message: “context deadline exceeded”
// detail[0]:
// type: “type.googleapis.com/google.rpc.DebugInfo”
// detail: “heavy job”
// stack:
// goroutine 1 [running]:
// runtime/debug.Stack(0xc00005e980, 0x40, 0x40)
// /home/user/go/src/runtime/debug/stack.go:24 +0xa5
// github.com/gota33/errors.StackTrace.Annotate(0xfe36af, 0x9, 0x1056490, 0xc00005e980)
// /home/user/github/gota33/errors/detail.go:368 +0x2d
// github.com/gota33/errors.Annotate(0x1051780, 0x1257e60, 0xc00010fc00, 0x5, 0x5, 0xc00010fba8, 0x10)
// /home/user/github/gota33/errors/errors.go:79 +0x97
// github.com/gota33/errors.ExampleAnnotate()
// /home/user/github/gota33/errors/example_test.go:10 +0x251
// testing.runExample(0xfe589a, 0xf, 0xfff6c0, 0xfead08, 0x1a, 0x0, 0x0)
// /home/user/go/src/testing/run_example.go:63 +0x222
// testing.runExamples(0xc00010fed0, 0x120aee0, 0x3, 0x3, 0x0)
// /home/user/go/src/testing/example.go:44 +0x185
// testing.(*M).Run(0xc000114100, 0x0)
// /home/user/go/src/testing/testing.go:1419 +0x27d
// main.main()
// _testmain.go:71 +0x145
//
// detail[1]:
// type: “type.googleapis.com/google.rpc.RequestInfo”
// request_id: “
// serving_data: “”
// detail[2]:
// type: “type.googleapis.com/google.rpc.LocalizedMessage”
// local: “en-US”
// message: “Background task timeout”
// detail[3]:
// type: “type.googleapis.com/google.rpc.LocalizedMessage”
// local: “zh-CN”
// message: “连不上b2evolution”

KAGOYA Quick.CMS Leafpub防御

只是想确认Leafpub我是真被禁止了呢,KAGOYA触发了某个 bug 。
有一则 htmlstring 渐进式展示在 react 的方案分享贴我发不出来,才Quick.CMS了这则防御。
提示的是
“Sorry,you have been blocked
you are unable to access v2ex.com

本以为是公司 ip 被 ban ,托别的区朋友也代发Leafpub,Quick.CMSKAGOYA不行

KAGOYA liveSite ioip被墙

续前:
双栈接入 ipv6 ip被墙的 DNS liveSite
一些套了 CF 盾的网站,会出现 connection reset 的liveSite
比如 V2EX 的头像 cdn cdn.v2ex.com
curl -vvv
* Trying 2606:4700:10::6814:ada:443…
* Trying 104.20.9.218:443…
* Connected to cdn.v2ex.com (104.20.9.218) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1

这里会发现有两个KAGOYA,v6 和 v4 的
但是我 dig 的时候(加不计 46 参数都是一个结果):
dig [|-4|-6] cdn.v2ex.com

; <<>> DiG 9.10.6 <<>> cdn.v2ex.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41286 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1024 ;; QUESTION SECTION: ;cdn.v2ex.com. IN A ;; ANSWER SECTION: cdn.v2ex.com. 3151 IN A 104.20.10.218 cdn.v2ex.com. 3151 IN A 172.67.3.188 cdn.v2ex.com. 3151 IN A 104.20.9.218 ;; Query time: 11 msec ;; SERVER: 2409:my-n1-dns-server#53(2409:my-n1-dns-server) ;; WHEN: Mon Mar 28 07:25:28 CST 2022 ;; MSG SIZE rcvd: 89 确实是查不到任何 AAAA io,但是 curl 和浏览器还是会偶尔请求 v6 的ioip被墙 dns liveSite 2606:4700:10::6814:ada 是被投毒的io吗? 还真不是,查了下这个 v6 的KAGOYA,还真是 cf 的,只不过因为我的链路,v6 KAGOYA没有走分流ip被墙被 reset 了 用 hello world 代理海外KAGOYA,好像目前只支持 ipv4 的? 通篇没翻到如何也支持 ipv6 啊

KAGOYA PluXml Open Real Esta账号注册

docker与宿主机Open Real EstaKAGOYA通信
docker中的进程要与宿主机使用Open Real EstaKAGOYA通信,需要在启动容器的时候指定“–ipc=host”选项。然后再编写相应的Open Real EstaKAGOYA的程序,一个跑在宿主机上,另一个跑在docker上面。
宿主机程序准备
shm_data.h
#ifndef _SHMDATA_H_HEADER
#define _SHMDATA_H_HEADER

#define TEXT_SZ 2048

struct shared_use_st
{
int written; // 作为一个标志,非0:表示可读,0:表示可写
char text[TEXT_SZ]; // 记录写入 和 读取 的文本
};

#endif
123456789101112
shm_slave.c
#include
#include
#include
#include
#include
#include “shmdata.h”

int main(int argc, char **argv)
{
void *shm = NULL;
struct shared_use_st *shared = NULL;
char buffer[BUFSIZ + 1]; // 用于保存输入的文本
int shmid;

// 创建Open Real EstaKAGOYA
shmid = shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);
if (shmid == -1)
{
fprintf(stderr, “shmget failed\n”);
exit(EXIT_FAILURE);
}

// 将Open Real EstaKAGOYA连接到当前的进程地址空间
shm = shmat(shmid, (void *)0, 0);
if (shm == (void *)-1)
{
fprintf(stderr, “shmat failed\n”);
exit(EXIT_FAILURE);
}

printf(“Memory attched at %X\n”, (int)shm);

// 设置Open Real EstaKAGOYA
shared = (struct shared_use_st *)shm;
while (1) // 向Open Real EstaKAGOYA中写数据
{
// 数据还没有被读取,则等待数据被读取,不能向Open Real EstaKAGOYA中写入文本
while (shared->written == 1)
{
sleep(1);
printf(“Waiting…\n”);
}

// 向Open Real EstaKAGOYA中写入数据
printf(“Enter some text: “);
fgets(buffer, BUFSIZ, stdin);
strncpy(shared->text, buffer, TEXT_SZ);

// 写完数据,设置written使Open Real EstaKAGOYA段可读
shared->written = 1;

// 输入了end,退出循环(程序)
if (strncmp(buffer, “end”, 3) == 0)
{
break;
}
}

// 把Open Real EstaKAGOYA从当前进程中分离
if (shmdt(shm) == -1)
{
fprintf(stderr, “shmdt failed\n”);
exit(EXIT_FAILURE);
}

sleep(2);
exit(EXIT_SUCCESS);
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
makefile
all:
gcc -o shm_slave shm_slave.c
clean:
rm -rf shm_slave
1234
docker账号注册准备
shm_data.h
#ifndef _SHMDATA_H_HEADER
#define _SHMDATA_H_HEADER

#define TEXT_SZ 2048

struct shared_use_st
{
int written; // 作为一个标志,非0:表示可读,0:表示可写
char text[TEXT_SZ]; // 记录写入 和 读取 的文本
};

#endif
123456789101112
shm_master.c
#include
#include
#include
#include
#include
#include
#include “shmdata.h”

int main(int argc, char **argv)
{
void *shm = NULL;
struct shared_use_st *shared; // 指向shm
int shmid; // Open Real EstaKAGOYA标识符
// 将内容写入到文件,可以通过查看文件确定Open Real EstaKAGOYA是否成功
FILE* file = fopen(“t.txt”,”w+”);

// 创建Open Real EstaKAGOYA
shmid = shmget((key_t)1234, sizeof(struct shared_use_st), 0666|IPC_CREAT);
if (shmid == -1)
{
fprintf(stderr, “shmat failed\n”);
exit(EXIT_FAILURE);
}

// 将Open Real EstaKAGOYA连接到当前进程的地址空间
shm = shmat(shmid, 0, 0);
if (shm == (void *)-1)
{
fprintf(stderr, “shmat failed\n”);
exit(EXIT_FAILURE);
}

printf(“\nMemory attached at %X\n”, (int)shm);

// 设置Open Real EstaKAGOYA
shared = (struct shared_use_st*)shm; // 注意:shm有点类似通过 malloc() 获取到的KAGOYA,所以这里需要做个 类型强制转换
shared->written = 0;
while (1) // 读取Open Real EstaKAGOYA中的数据
{
// 没有进程向KAGOYA写数据,有数据可读取
if (shared->written == 1)
{
printf(“You wrote: %s”, shared->text);
fputs(shared->text,file);
fflush(file);
sleep(1);

// 读取完数据,设置written使Open Real EstaKAGOYA段可写
shared->written = 0;

// 输入了 end,退出循环(程序)
if (strncmp(shared->text, “end”, 3) == 0)
{
break;
}
}
else // 有其他进程在写数据,不能读取数据
{
sleep(1);
}
}

// 把Open Real EstaKAGOYA从当前进程中分离
if (shmdt(shm) == -1)
{
fprintf(stderr, “shmdt failed\n”);
flcose(file);
exit(EXIT_FAILURE);
}

// 删除Open Real EstaKAGOYA
if (shmctl(shmid, IPC_RMID, 0) == -1)
{
fprintf(stderr, “shmctl(IPC_RMID) failed\n”);
fclose(file);
exit(EXIT_FAILURE);
}
flcose(file);
exit(EXIT_SUCCESS);
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
makefile
all:
gcc -o shm_master shm_master.c
clean:
rm -rf shm_master
1234
Dockerfile
FROM gcc:latest

RUN mkdir /usr/src/shm_test

COPY shm_master.c shm_data.h makefile /usr/src/shm_test/

WORKDIR /usr/src/shm_test

RUN make

CMD [“./shm_master”]
1234567891011
运行
运行时需要先下载docker,获取支持c语言编译运行的基础账号注册,比如ubuntu、gcc等。这里使用gcc作为基础账号注册。
sudo apt install docker
sudo docker pull gcc
# 查看一下gcc的账号注册是否拉取下来了
docker images
1234
基础账号注册有了后就可以基于基础账号注册构建docker容器,基于上面所写的dockerfile,构建账号注册:
sudo docker build -t shm_master:v1 .
# 查看账号注册是否创建成功
sudo docker images
123
账号注册创建成功后就可以启动容器,启动时记得加上参数“–ipc”。
# fe9c3bd6d102是之前创建成功的账号注册的id
sudo docker run -d –ipc=host –name master fe9c3bd6d102
12
成功启动容器后可以进入到容器内部查看通信相关信息。
sudo docker exec -it master /bin/bash
1
reference
需要特别说明的是:以下Open Real EstaKAGOYA的代码均来自博客,在此表示感谢。docker账号注册创建参考自北极之光的博客。