0%

编辑/etc/gai.conf

找到如下部分,取消前5行的注释

# label   <mask>   <value>
#    Add another rule to the RFC 3484 label table.  See section 2.1 in
#    RFC 3484.  The default is:
#
label ::1/128       0
label ::/0          1
label 2002::/16     2
label ::/96         3
label ::ffff:0:0/96 4
#label fec0::/10     5
#label fc00::/7      6
#label 2001:0::/32   7
阅读全文 »

利用statik库将静态资源嵌入二进制,但是GIN并没有提供从http.FileSystem加载模板的方法,所以得手动去加载

主要实现

func initTemplates() *template.Template {
	statikFS, err := fs.New()
	if err != nil {
		log.Fatal(err)
	}
	t := template.New("")
	//找出所有扩展名为.gohtml的文件,将其解析为模板
	err = fs.Walk(statikFS, config.TemplateDir, func(path string, info os.FileInfo, err error) error {
		if filepath.Ext(info.Name()) == ".gohtml" {
			f, err := statikFS.Open(path)
			if err != nil {
				return err
			}

			b, err := ioutil.ReadAll(f)
			if err != nil {
				return err
			}

			_, err = t.New(path[1:]).Parse(string(b)) //此处去掉 path 前的 / 来作为模板的文件名
			if err != nil {
				return err
			}
		}

		return nil
	})

	if err != nil {
		log.Println("Load templates error")
		log.Fatal(err)
	}
	return t
}
阅读全文 »

今天用Docker部署gost的时候发现gost没有使用hosts文件中指定的ip,遂查阅了一番资料,得知是缺少了/etc/nsswitch.conf文件,解决方法如下:

echo "hosts: files dns" > /etc/nsswitch.conf

这条命令可以在运行时加入,也可以在构建镜像时加入,Dockerfile如下:

阅读全文 »

为了能够顺利根据这篇文章打通隧道,最好了解并满足如下前提:

  • 两台具有公网IP的VPS A和B,其中至少有一台拥有独立IP,并且另一台如果是NAT VPS则需要内外映射端口一致,假设A的公网IP为1.1.1.1,B的公网IP为2.2.2.2
  • 设定隧道A端内网IP为10.0.0.1,B端内网IP为10.0.0.2
  • A、B两台机器系统为Debian 10
  • 关闭防火墙

配置GRE隧道

阅读全文 »

这个学期学校网络登陆方式从拨号换到了dr.com的网页认证,通过chrome F12打开开发者工具,查看其登录其实就是发了一个GET请求,如下
请求url:http://10.160.63.9:801/eportal/
参数:

  • c:值为Portal,无需改动
  • a:值为login,代表登录,登出则是logout
  • callback:值为dr加上一个精确到毫秒的时间戳,如dr1599458671000,该值代表登陆的时间,实测该值并不影响登录,估计与上网记录的统计有关
  • login_method:值为1,无需改动
  • user_account:登陆账号,如1234123123@telecom,一般账号为学号,后面的后缀则为选的运营商,电信是telecom,其他运营商未测试
  • user_password,登陆密码,默认为身份证后六位
  • wlan_user_ip:通过DHCP获取到的内网ip
  • wlan_user_mac:值为000000000000,无需改动
  • wlan_ac_ip:值为221.178.235.146,无需改动
  • wlan_ac_name:值为JSSUZ-MC-CMNET-BRAS-KEDA_ME60X8,无需改动
  • jsVersion:值为3.0,无需改动
  • _:值为一个精确到毫秒的时间戳,猜测是打开网页的时间,实测该值并不影响登录,估计与上网记录的统计有关

关于内网ip可在路由器上获取,时间戳同样可以直接获取,如下

阅读全文 »

要使用Cloudflare加速梯子,首先梯子必须是用websocket作为传输方式的,比如v2ray的websocket,gost的websocket隧道,shadowsocks的v2ray-plugin等等,关于这些东西的搭建教程有很多,我就不赘述了,只讲如何使用Cloudflare,并自选ip来达到最好的加速效果,你所需要的只是一个域名

使用Cloudflare Workers反向代理

先创建一个Cloudflare账号,然后在主页面右下角点击Workers,进入创建一个Worker

接着在编辑区域粘贴以下代码

阅读全文 »

本文介绍如何使用Docker部署Prometheus + Grafana VPS监控系统
为了方便容器编排,将使用docker-compose来部署
目录结构:

moniter
├── docker-compose.yml
├── grafana
│   └── data
├── prometheus
│   ├── config
│   │   └── prometheus.yml
│   └── data
└── node_exporter
    └── node_exporter

部署node_exporter

阅读全文 »

经常碰到买的一些小鸡到国内的网络很差,SSH非常卡,所以使用代理来连接SSH十分重要

尽管Xshell等一系列GUI工具可以简单地实现代理,但是对于VSCode等依赖OpenSSH的软件来说并不简单

在Linux之类的上经常使用netcat来代理SSH,但是netcat在Windows上的实现比较残缺,少了代理的功能,所以只能用ncat来替代

阅读全文 »

一直使用自建的Shadowsocks服务进行游戏加速,我也写过文章展示如何用Docker部署(传送门)用起来没什么问题,但是最近玩GTA 5的时候却发现几乎无法与他人联机。使用NatTypeTester显示NAT类型为Symmetric,游戏内显示为严格

推测原因

使用Bridge模式的容器在将内部端口映射到外部时相当于做了一次NAT,而Linux内核默认是没有实现FullCone NAT

阅读全文 »