在Docker下部署Wireguard

最近需要经常上GitHub clone一些项目,但是学校的校园网不仅卡,有些时候GitHub根本上不去甚至卡死,我已经经常为这件事抓狂了,所以去Vultr上买了两个月的VPS搭个WireGuard服务器给自己用。

WireGuard服务器搭建本来是比较困难的,如果需要组网需要自己搭建一下网桥。而docker正好解决了这个问题,这次把这个内容放进GitHub里避免自己忘记。需要说明的是WireGuard不仅可以搭机场科学上网,也可以加上内网穿透给自己搭一个回家的VPN,这样可以直接在内网里访问家里的NAS或者是服务器,不需要公网IP也没有向公网暴露端口,总体上说还是不错的。

WireGuard优点挺多,比如加密协议简单且安全,可以直接运行Linux内核里,速度嘎嘎棒;当然缺点很多,比如用的是UDP协议,在国内这种QoS下丢包率感人,而且WireGuard很容易被识别封IP。如果要用的话最好只给自己用吧。

其实命令很简单,首先是在Linux下安装docker,比如Ubuntu和Debian(这些发行版软件源有docker软件包):

1
sudo apt install docker.io -y

或者是Fedora以及CentOS,要启动额外的软件源才能安装。

1
2
3
4
5
6
7
8
9
#先下载Repo
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo #使用官方的源
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/fedora/docker-ce.repo #使用国内镜像源
#换源
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
#安装
sudo dnf install docker-ce docker-ce-cli containerd.io
#启动docker daemon
sudo systemctl start docker --now

接下来只需要一条指令就可以启动了,最好放在一个bash脚本里。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker run -d \
--name=wireguard \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e SERVERURL=11.4.5.14 \
-e SERVERPORT=51820 \
-e PEERS=10 \
-e PEERDNS=auto \
-e INTERNAL_SUBNET=191.9.8.10 \
-e ALLOWEDIPS=0.0.0.0/0 \
-p 51820:51820/udp \
-v /opt/wireguard/config:/config \
-v /opt/wireguard/module:/lib/modules \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--restart unless-stopped \
linuxserver/wireguard

解释以下这里的几个选项:

  • name指定这个docker容器名称
  • SERVERURL指定服务器IP地址,可以用ip addr查询以下
  • SERVERPORT指定服务器的端口
  • PEERS指定节点数量,最好多留几个
  • INTERNAL_SUBNET指定内网地址,具体看自己习惯修改
  • -p指定端口和协议,与端口SERVERPORT一致
  • /opt/wireguard/config/opt/wireguard/module改成自己指定的本地文件夹,我是在/opt下创建的,可以自己做一些修改

执行完之后如果VPS有防火墙,记得放行一下刚刚指定的端口,接下来就是安装本地的WireGuard软件,Windows下可能比较难找到(因为WireGuard官网已经被墙了),Android可以在F-Droid商店里下载,Linux的话基本上每个发行版都有软件包,具体可以去查Wiki,这里讲一下在安卓下连接的方法。

在创建完服务器并开启之后,以之前的目录为例,用scp命令把服务器上/opt/wireguard/config/peer1/peer1.png下载到电脑上,然后用手机扫图片里的二维码就行了,如果服务器在内网还得重新修改一下远端IP地址(即Endpoint这一项),打开连接后出现“上次握手时间 现在”就说明连接成功了,如果是电脑的话下载/opt/wireguard/config/peer1/peer1.conf加进WireGuard配置里就行了。

对现在网络现状的杂谈

为什么我想起写这篇文章,我在B站站龄少说也有个五六年,从小学到大学基本上跟着B站一起过来。期间也经历过B站几次“腥风血雨”的审核潮,下架视频多到不知道哪里去了(我有期自己水的鬼畜也惨遭毒手,最后干脆不申诉直接下架了,因为我主业是搞科技视频的)。其实最近看B站愈加短视频化,各路杠精在评论区争相打擂台赛,我也挺无语的。

好端端一个科技视频怎么这么多杠精?

以前在一个视频下面我说过STM32确实可以跑Linux,(确实是可以,编译的时候需要加NOMMU,用单片机的arm-none-eabi-gcc编译)。结果下面来个评论“你们两个‘卧龙凤雏’”,我说实话,我也没有向别人炫耀的意思,因为Linux内核代码里就有STM32F429的设备树,再不行就上STM32MP157呗,哪有这么多需要嘲讽的,结果现在倒是有了。所以,我们为什么不能好好说话?能不能不要把那些从网上随便学来的烂梗没有脑子地搬上来直接跟人对喊?喊得响有用吗,解决得了问题吗?

好好说话的的前提,是没有那么多戾气

现在的中国社会问题也是层出不穷(这里我没有任何别的意思,我也不是什么公知,单纯是想批评一下现在的一些情况,虽说这里有套盾的嫌疑但是我也只能讲出这么一大通),我们的网络其实就是社会压力一个放大器。如今的网络正是这社会压力造成的。肉食者只把人口当作一种红利,却不知道人口红利是有代价的,老龄化和人口暴涨带来的压力事实上就已经压在90后和00后身上了,而且社会的不平等现象也在加剧,教育资源和家庭环境所带来的差异也在不断显现。我是在浙江这里读书的,室友有一个来自西南的,我身为寝室长也觉察出一些不同,那位室友晚上玩游戏骂人较其他人明显更暴躁(本人没有任何歧视的意思)。我个人觉得这其实与教育资源与家庭环境关系关系还是较大的,相比起他们而言我们的教育资源确实比较密集了。(所以很多情况下我也能忍住不说,毕竟不是所有人都能马上改变)

不仅如此我们现在追求的是一种不计一切的短期投入————也就是说卷,和周围人进行零和博弈,就是要在这一点上争出个你死我活。比如说高中的教育,我们被灌输成“只要考上好大学就可以了”,完全不管大学里所需要的一些技能,比如说运用各种工具,分辨必要和不必要的事情(这一点我就必须点名批评这些乱七八糟的慕课,课是拿来教授知识的不是给你拿来水时长的,如果完全重复就不要乱整),时间安排这些事情。在这种高中的教育之后我们就只能学会去不断的应付。高中教育还有一种很荒唐的话“揣摩出题人意图”,和几百年前八股取揣摩孔夫子的意图毫无差别,知识是活的,但是就是这样被人给读死了(这话我准备在接下来某篇博客里再讲,希望我还记得)。

你觉得抖音这玩意好吗?

其实从传播学的角度,抖音是非常成功的。因为它能用夸张的图文和短暂的形式给人带来持久的印象,比如短视频里的大号文字,故意变形的人脸,矫揉造作的语音(那个“刚满十八岁”真的把我恶心到了,但是因为奇葩,所以一直能在网上作为一个梗来传播),其实如果你想火的话,抖音真的挺合适的。但是从它的传播所带来的影响而言,抖音这些短视频的危害已经约等于“精神鸦片”了————学校里所学的定理左耳进右耳出,但是短视频里的那些搞笑片段他们能记一天。本人有幸读过《娱乐至死》,“媒介即隐喻”,“媒介即传播论”其实就能佐证短视频的影响,短视频作为一种碎片化媒介,给人一种“任何东西本来就该快餐化”的印象。这只会使我们的记忆变得更加“快”————记得快,忘得快,也就只能让我们爽那么一天。

所以你现在在B站还想火吗?

如果你问前几年的我,我当然想火,我想火,我想让更多人看自己的视频。其实现在我反倒不想了,高中三年已经让我错过了做视频火的大好时光,同时我也觉得有那么多粉丝自己估计天天都在为粉丝发愁吧。很多东西其实是小圈子,我们没必要想办法去扩大他,虽说不能孤芳自赏,但也总不能让这一份和谐破坏掉吧。

回到原来的话题,我们怎么好好说话

其实我也一直在研究这个,说实话挺难做到的。我也是个嘴臭的人,因为我用的是方言所以骂人的时候周围人基本上听不懂(笑)。但是好好说话无论是在网上还是在现实生活都是挺重要的。我在大学选了一节管理学院的老师的课,她讲的挺有道理,我这里找几点随口说说。

首先就是对事不对人,毕竟一码事归一码事。如果你对一个人这样无脑输出的话,其实你也在全盘否定他做的好的一点,他怎么可能不跟你急?

其次就是换位思考,去揣摩别人的意图,察言观色。这不是叫人去阿谀奉承也不是去叫你忍,而是在理解难处的同时去思考这些问题,这样你在他的视角上或许能找到解决办法。

我所记得最深的也就这两点吧,反正我感觉自己最近有些健忘。这篇博客就写到这里吧,我要去写论文了。

全新的博客

为什么我又重新写起博客,一方面是打发时间,另一方面是很多事情想和大家聊,这个博客存在的最大意义是分享一些我曾经写的代码以及由此带来的一些经验,仅此而已。以下只是一些无聊的问答

你现在还玩Linux吗

几乎很少了,除了在arm开发板(比如最近正火的RK3588,全志全家桶)之外很少再用Linux了。一是很多软件,比如Keil这些是必须在Windows下跑的,二是Linux确实很难调。现在我的笔记本是AMD的,虽然微软对AMD的优化一坨稀烂但是我还是得用(相当于知道是答辩也得吃下去),而且万恶的英伟达对Wayland兼容性依旧很差,在当今Linux系统全部改用Wayland的情况下,叫我用Linux无疑是相当于扔了张4060(我这张卡大部分时候都是拿来跑CUDA的)

为什么选择GitHub发博客而不选择其他平台

其实很多技术类文章我都会同步发在cnblogs上,但是说实话如果我聊一些敏感内容的话哪里确实不怎么合适。而且我担心我的博客直接被爬虫爬了,GitHub这玄学网络对我还是挺合适的

为什么要重新开始写博客

反正就是分享一些技术性内容,顺带对时事政治做一些讨论。我个人是真心不喜欢键政,但是总有些要吐槽的。我火气不是很大,但是不喜欢被惹恼,现在网络戾气太大,有些时候说出来的话只要自己看见就行,或者是被知音看见。反正我现在感觉自己确实需要重新安静下来研究了。

大学时有自己的电脑了,Hexo也可以稳定运行了,只要硬盘不崩,大概率是可以恢复的。