• 欢迎访问soga,原來如此!使用最新版Firefox浏览器和Chrome浏览器访问本网站
  • 新域名https://soga.ee 同样简短好记!
  • Telegram搜索+12526511666可找到站长面基
  • 如果您觉得本站还凑合,那就赶快使用Ctrl+D 收藏吧

关于过墙梯…

VPS信息 soga 1年前 (2018-12-14) 1148次浏览 已收录 0个评论

近期在国内,时不时需要使用到 google。所以不可避免的,用到了梯子。前几天发现一个情况,网路上知名部落格大佬逗比根据地消失了,网站打不开,telegram 账号删除,疑似跑路……这 tm 就很尴尬了。我本想和大家讨论下最近新出来的 WireGuard,被视为下一代VPN协议,用来替代 OpenVPN,IPSec 等VPN协议。。WireGuard 是一个通过 UDP 协议,实现端对端的连接,然后就被大家视为新过梯了……具体的优点大家自己查询吧,我只说一个字“很快”能比正常的速度快上 1/3,有测试图如下。

关于过墙梯...

WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPSec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.

作为一个比较新的网络应用,总是想多学习和体验一番。不知道网友们有没有熟悉这个软件的,它需要在 linux 下部署,相对而言前期的设置操作是比较复杂的。贴一个自己理解的安装过程,欢迎大家指正其中错误的地方。

一、环境介绍

服务器:Ubuntu16.04 x64

客户端:Windows7

虽然写了服务器、客户端,但需要大家知道的是,WireGuard 并没有强调服务器与客户端的,只在于是谁连接了谁,我们这里使用 Windows7 连接 Ubuntu,所以这里标明 Ubuntu 为服务器,Windows7 为客户端。

二、Windows7 下 Tunsafe 安装及密钥生成

我们所使用的客户端是 Windows7,可以使用 Tunsafe 客户端,下载地址:“https://tunsafe.com”。软件安装过程就略过,软件打开后界面如下:

关于过墙梯...

可以使用客户端工具来生成公钥与么钥。点击客户端“File”菜单,选择“Generate Key Pair…”项,点击“Randomize”按钮来生成客房端公钥与私钥,如下图所示。

关于过墙梯...

客户端私钥:aL541p6k4ys1jhhWV+dFIK4MSogdMoGWnoJCW40PeW0=

客户端公钥:WWwXgCaptYXGsjRSjRRRiP3zYkkRthECHUPadqh7LTM=

三、Ubuntu 下 WireGuard 安装

1、安装 WireGuard

WireGuard 官网已经给出了安装教程,大家可以作为参考,网址为:“https://www.wireguard.com/install/”。

  1. addaptrepository ppa:wireguard/wireguard
  2. aptget update
  3. aptget install wireguarddkms wireguardtools linuxheaders$(uname r)

 

关于过墙梯...

2、生成服务器端密钥

在安装成功后,在/etc 目录下,就会创建 wireguard 文件夹。接下来进入到目录下,生成服务器端密钥。

  1. cd /etc/wireguard/
  2. umask 077
  3. wg genkey | tee server_private_key | wg pubkey > server_public_key

 

生成完成后,就可以看到当前路径下有“server_private_key”及“server_public_key”2 个文件。

3、创建服务器配置文件

在/etc/wireguard/下创建 wg0.conf 文件。

  1. vi /etc/wireguard/wg0.conf

 

文件内容为:

  1. [Interface]
  2. Address = 10.200.200.1/24
  3. SaveConfig = true
  4. PrivateKey = 服务器的私钥(在服务器上生成的 server_private_key 文件)
  5. ListenPort = 51820
  6. [Peer]
  7. PublicKey = 客户端的公钥(这个是上面客户端生成的公钥 Public Key)
  8. AllowedIPs = 10.200.200.2/32

 

刚刚建立的 wg0.conf 主要是为了 wg0 这个虚拟网卡的配置文件,其中,

[Interface]:服务器端配置开始标志

Address:为服务器本机 IP 地址

SaveConfig:为 true 时,有客户端连接时,保存状态信息,自动保存到 wg0.conf 文件

PrivateKey:为服务器的私钥

ListenPort:为服务器监听的端口号 51820

[Peer]:客户端开始标志,(多个客户端,会有多个配置连接)

PublicKey:为客户端的公钥,这个需要客户端生成,客户端生成完成后,需要填写

AllowedIPs:允许客户端连接的地址

服务器配置文件完整截图如下:

关于过墙梯...

4、允许 IP 转发

在服务器中,要加入 IP 转发,要不然会出现客户端不能上网,修改/etc/sysctl.conf 文件。

  1. vi /etc/sysctl.conf

 

将配置文件中“net.ipv4.ip_forward=1”前面的“#”号去掉。

关于过墙梯...

修改完成后,保存后,重新启动服务器,或者直接用使用如下命令操作。

  1. sysctl p
  2. echo 1 > /proc/sys/net/ipv4/ip_forward

 

关于过墙梯...

5、修改防火规则

设置 iptables 列表的内容,需要配置接受的协议及端口号,数据转发也需要它的支持。

  1. iptables A INPUT m conntrack ctstate RELATED,ESTABLISHED j ACCEPT
  2. iptables A FORWARD m conntrack ctstate RELATED,ESTABLISHED j ACCEPT
  3. iptables A INPUT p udp m udp dport 51820 m conntrack ctstate NEW j ACCEPT
  4. iptables A INPUT s 10.200.200.0/24 p tcp m tcp dport 53 m conntrack ctstate NEW j ACCEPT
  5. iptables A INPUT s 10.200.200.0/24 p udp m udp dport 53 m conntrack ctstate NEW j ACCEPT
  6. iptables A FORWARD i wg0 o wg0 m conntrack ctstate NEW j ACCEPT
  7. iptables t nat A POSTROUTING s 10.200.200.0/24 o ens3 j MASQUERADE

 

这里特别需要说明的是,最后一行中的“ens3”为服务器本地网卡的名称,这个需要根据你自己的网卡名称而定。配置完成后,将其保存起来。

  1. aptget install iptablespersistent
  2. systemctl enable netfilterpersistent
  3. systemctl start netfilterpersistent
  4. netfilterpersistent save

 

6、DNS 服务器配置

这一步可以配置,也可以不用配置,主要是因为使用公共 DNS,存在泄漏 IP 地址的情况,所以我们自己建立 DNS,让我们隐藏在VPS后面,从而加强我们的安全,下面的语句要逐条执行。

  1. aptget install unbound unboundhost
  2. curl o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache

 

接下来配置 unbound。

  1. vi /etc/unbound/unbound.conf.d/rootautotrustanchorfile.conf

 

将原有内容注释后,修改配置文件内容如下:

  1. server:
  2. numthreads: 4
  3. #允许日志
  4. verbosity: 1
  5. #根服务器列表
  6. roothints: “/var/lib/unbound/root.hints”
  7. #DNSSEC的根密钥文件
  8. autotrustanchorfile: “/var/lib/unbound/root.key”
  9. #允许查询任意网站的 dns
  10. interface: 0.0.0.0
  11. maxudpsize: 3072
  12. #仅允许本机和10.200.200.0/24段 ip 访问
  13. accesscontrol: 0.0.0.0/0 refuse
  14. accesscontrol: 127.0.0.1 allow
  15. accesscontrol: 10.200.200.0/24 allow
  16. #不进入公共 dns 服务器列表
  17. privateaddress: 10.200.200.0/24
  18. #隐藏信息
  19. hideidentity: yes
  20. hideversion: yes
  21. #强制DNSSEC
  22. hardenglue: yes
  23. hardendnssecstripped: yes
  24. hardenreferralpath: yes
  25. #Add an unwanted reply threshold to clean the cache and avoid when possible a DNS Poisoning
  26. unwantedreplythreshold: 10000000
  27. #验证地址,记录 dns 投毒事件(Have the validator print validation failures to the log.)
  28. valloglevel: 1
  29. #Minimum lifetime of cache entries in seconds
  30. cacheminttl: 1800
  31. #Maximum lifetime of cached entries
  32. cachemaxttl: 14400
  33. prefetch: yes
  34. prefetchkey: yes

 

配置完后,开启服务,并设置为开机自启动。

  1. chown R unbound:unbound /var/lib/unbound
  2. systemctl enable unbound
  3. systemctl start unbound

 

7、启动虚拟网卡

接下设置一下网卡的配置文件,以及开启网卡,并设置为服务,开机自启动。

  1. chown v root:root /etc/wireguard/wg0.conf
  2. chmod v 600 /etc/wireguard/wg0.conf
  3. wgquick up wg0
  4. systemctl enable wgquick@wg0.service

 

四、Windows7 下客户端的配置

软件打开后界面如下:

关于过墙梯...

接下来点击“File”菜单,选择“Edit Config File”项或界面中的“Edit Config”按钮,在弹出的配置文件,删除所有内容,修改如下:

  1. [Interface]
  2. Address = 10.200.200.2/32
  3. PrivateKey = 客户端的私钥
  4. DNS = 10.200.200.1
  5. [Peer]
  6. PublicKey = 服务器的公钥
  7. Endpoint = 服务器的物理 ip 地址:51820
  8. AllowedIPs = 0.0.0.0/0
  9. PersistentKeepalive = 21

 

接下来,说明一下配置文件各项的内容:

[Interface]:客户端配置开始部分

Address:客户端 IP 地址(也就是本机地址)

PrivateKey:客户端私钥(服务端生成的 client_private_key 文件)

DNS:服务器 IP 地址作为 DNS

[Peer]:服务器端的配置信息

PublicKey:服务器的公钥(服务端生成的 server_public_key 文件)

Endpoint:服务器的 IP 地址及端口号

AllowedIPs:0.0.0.0/0 为允许所有 IP 地址通讯,如果单个 IP 地址,可以写多个用逗号隔开,默认写客户端的 IP 地址

PersistentKeepalive:用来保持连接检查的,每过 25s 会自动检查连通性,如果 IP 有变化,也是通过这个自动更新 endpoint

关于过墙梯...

我们点击界面上的“Connect”即可以连接到服务器,如下图所示。

关于过墙梯...

此时我们再测试一下是否可以正常访问 Google,如下图所示。

关于过墙梯...

特别说明一下,如果我们对服务器配置文件做修改,需要先关闭网卡后,再进行配置文件的修改,修改完成后,开启网卡,以下这两个命令主要是用来关闭或启动网卡的方法。

  1. # 关闭虚拟网卡
  2. wgquick down wg0
  3. # 启动虚拟网卡
  4. wgquick up wg0

 

附加说明,如果你还是连接不上,你可以把服务器重新启动一下。

安装方法参考自李老师的博客


版权所有归 soga.ee 丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于过墙梯…
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址