Debian Wireguard

Debian Wireguard

wireguard远程办公其实还是蛮爽的,安装比较简单

安装

sudo apt-get update
sudo apt-get install wireguard

配置

然后把你们网管给你的私钥放在/etc/wireguard/wg0.conf

sudo vim /etc/wireguard/wg0.conf

配置文件大概这样

echo "
[Interface]
PrivateKey = $(cat client_privatekey)
Address = 10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat server_publickey)
Endpoint = 1.2.3.4:50814
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25 " > client.conf

你的ifconfig信息大概这样

➜  ifconfig                                                              ✔  23:29:15
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4,TSO6>
	ether 80:fa:5b:64:6e:a6
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (<unknown type>)
	status: inactive
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	ether 18:4f:32:f4:7e:a3
	inet6 fe80::1c97:67ed:68fb:d0ee%en1 prefixlen 64 secured scopeid 0x6
	inet6 2408:8207:c9a:2db0:1b:b572:56e0:4cac prefixlen 64 autoconf secured
	inet6 2408:8207:c9a:2db0:a0f4:631b:7637:1b83 prefixlen 64 autoconf temporary
	inet 10.10.10.5 netmask 0xffffff00 broadcast 10.10.10.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
	ether 0a:4f:32:f4:7e:a3
	media: autoselect
	status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
	ether 5a:14:bb:ea:17:7a
	inet6 fe80::5814:bbff:feea:177a%awdl0 prefixlen 64 scopeid 0x8
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
	inet6 fe80::2c3b:78b4:b948:a51f%utun0 prefixlen 64 scopeid 0x9
	nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
	inet6 fe80::83f5:8460:590a:6ae1%utun1 prefixlen 64 scopeid 0xa
	nd6 options=201<PERFORMNUD,DAD>
vnic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=3<RXCSUM,TXCSUM>
	ether 00:1c:42:00:00:08
	inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
	media: autoselect
	status: active
vnic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=3<RXCSUM,TXCSUM>
	ether 00:1c:42:00:00:09
	inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
	media: autoselect
	status: active

启动

wg-qucik up wg0
wg-quick down wg0

问题

我后来尝试在manjaro上部署wireguard,但是wireguard告诉我,不支持我的内核,窝头。。。

解决方法

当我执行以下命令检查内核模块的时候,告诉我没有。

modprobe wireguard && lsmod | grep wireguard
modprobe: FATAL: Module wireguard not found

查看内核版本

uanme -a
Linux lazy 5.3.18-1-MANJARO #1 SMP PREEMPT Wed Dec 18 18:34:35 UTC 2019 x86_64 GNU/Linux
sudo apt-get install linux-headers

他会提示一些内核版本,你需装符合你内核版本的linux-header即可
2020-02-28_23-52
这次再去启动,就没有问题了

让我康康背景那张涩图 :upside_down_face:

前言

由于搬家之后,后宽带是小区承包的不能直接改桥接,之前其实没什么需求,前段时间把博客从Github Page迁到了云上,博客的源文件留在了本地,有时候写博客的时候在iMac有时候写博客会在MacbookPro,如此两边的hexo文件就不同步,想了很多办法,比如

  • resillo rsync直接同步,但也不能每次写博客都同步啊?而且这东西也不能天天开

  • 直接把hexo传到git上,这也有个问题就是hexo本身就是有.git,所以传git也不是好办法

  • 还有个最麻烦的方法,就是每周把MacbookPro拿回去Sync,这其实也不是解决问题办法

所以干脆直接上Wireguard既解决了博客问题,也解决了智能家居米家和HomePod不同体系问题,也摆脱了向日葵堪忧的画质,可以直接访问家里的服务器资源

昨天买了服务器开机卡,需要服务器开机时候就直接远程开机,然后计划任务启动Wireguard直接上线

关于服务端配置,我直接买的阿里云轻量云服务器,2C4G5M,目前来说够用

部署Wireguard服务端

我的服务器是Ubuntu,所以直接


sudo apt-get update

sudo apt-get install wireguard

接下来就是配置文件的问题,先生成服务端私钥密钥


wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

然后在/etc/wireguard/创建wg0.conf

注: 10.1.10.1为你wireguard的虚拟机IP段,10.1.10.1为你内网的IP段


vim /etc/wireguard/wg0.conf

----------------------------

[Interface]

ListenPort = 12345 // 需要改成你的端口,别忘了在云防火墙放行udp端口

Address = 10.1.10.1/24 // 你的wireguard的虚拟ip

PrivateKey = 8xmxxxxu17xiPxxx5xyMxxxxstS1xxxkx= // 填你那会生成的私钥

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

PostUp = iptables -I FORWARD -s 10.1.10.1/24 -i wg0 -d 10.1.10.1/24 -j ACCEPT

PostUp = iptables -I FORWARD -s 10.1.10.1/24 -i wg0 -d 10.1.1.0/24 -j ACCEPT

PostUp = iptables -I FORWARD -s 10.1.1.0/24 -i wg0 -d 10.1.10.1/24 -j ACCEPT

PostDown = iptables -D FORWARD -s 10.1.10.1/24 -i wg0 -d 10.1.10.1/24 -j ACCEPT

PostDown = iptables -D FORWARD -s 10.1.10.1/24 -i wg0 -d 10.1.1.0/24 -j ACCEPT

PostDown = iptables -D FORWARD -s 10.1.1.0/24 -i wg0 -d 10.1.10.1/24 -j ACCEPT

接下来为你的不同客户端生成私密钥,注意私密钥不能重复使用,生成操作类似


// 我是直接mkdir etc/wireguard/client/iMac, 建立了iMac的客户端的私密钥匙文件夹方便日后管理

wg genkey | tee /etc/wireguard/client/iMac_privatekey | wg pubkey > /etc/wireguard/client/iMac_publickey

生成完之后,需要用PublicKey添加Server端的Peer


# iMac

[Peer]

PublicKey = aaaaphxxxxx6uSOxxxaaCwWxxaay+UgasdsdaazF0= //此处填你生成的客户端的公钥

AllowedIPs = 10.1.10.11/32,10.1.10.0/24,10.1.1.0/24 // 此处第一个段为你在wireguard虚拟网里的IP,第二个地址段是虚拟端,第三个是内网

然后将Peer添加到服务器wg0.conf的最后

然后,编辑/etc/sysctl.conf开启Linux内核的IP包转发,在文件中更改如下:


vim /etc/sysctl.conf

net.ipv4.ip_forward = 0 // 将0改成1,如果没有这个参数,直接自己加也行

使其生效


sysctl -p

启动服务端即可


wg-quick up wg0


服务器资源由ZeptoVM赞助

Partners Wiki Discord