Centos 7 下安裝 Wireguard


https://www.wireguard.com/

一 wireguard 介紹:

wireguard簡介

wireguard是一個新的高性能V**,wireguard相對於OpenV**來說,配置起來更加簡單,運行速度也更快,linux內核5.6中了合並了它,以后的版本大概率能用上原生的wireguard了.

二 centos7 下部署wireguard:

官方安裝文檔: https://www.wireguard.com/install/

# Wireguard 是內核級別的特性,對內核的版本是有要求的,最好先升級一下內核. 官方給出來了3種安裝方式,任選一種即可:
# 此處選擇centos7的安裝內容,其他的系統在列表里面自行查找.
系    統:  centos 7.x
內核要求:  > 3.10 (uname -r)

### Method 1: a signed module is available as built-in to CentOS's kernel-plus:
$ sudo yum install yum-utils epel-release
$ sudo yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
$ sudo sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
$ sudo yum install kernel-plus wireguard-tools
$ sudo reboot

### Method 2: users wishing to stick with the standard kernel may use ELRepo's pre-built module:
$ sudo yum install epel-release elrepo-release
$ sudo yum install yum-plugin-elrepo
$ sudo yum install kmod-wireguard wireguard-tools

### Method 3: users running non-standard kernels may wish to use the DKMS package instead:
$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-tools

三 wireguard 配置:

# 3.1) 創建目錄:
mkdir -p /etc/wireguard

# 3.2) 創建server端的公私鑰:
wg genkey | tee privatekey-server | wg pubkey > publickey-server 

# 3.3) 創建client端的公私鑰:
wg genkey | tee privatekey-client | wg pubkey > publickey-client

# 3.4) 創建配置文件:

[root@bj-vnp wireguard]# cat wg0.conf
[Interface]
Address = 10.10.0.1/24
SaveConfig = false
DNS = 8.8.8.8
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
ListenPort = 51820
PrivateKey = UG0DrMJ1jQmaExSy6LOOwanDFyplfSgBtzCUKmL772k=

# 添加新用戶,就新生成一組秘鑰對,此處加入peer,后面可以有很多.
# office 
[Peer]
PublicKey = zy3IkHgq6SdM
AllowedIPs = 10.10.0.2                                              

# home
[Peer]
PublicKey = t6ab6f6j2
AllowedIPs = 10.10.0.3


################################################################################################
Interface:   服務端的配置端口 DNS  IP  規則, 私鑰都在這個欄目下配置
Address  :   服務端IP地址, 主要要加上 子網掩碼,內網服務可以寫內網地址,在路由器上做好端口映射即可.
SaveConfig:  
DNS      :  取得的DNS地址 8.8.8.8 
PostUp   :  服務端啟動后,添加這個規則,用於偽裝和轉發各種流量.
PostDown :  服務端關閉后,執行這個命令規則,清理啟動時添加的規則.
ListenPort: wireguard 默認端口51820.
PrivateKey: 注意此處填寫的是服務端的私鑰.

[Peer]   :   聲明一個節點
PublicKey:  該節點的公鑰
ALLowedIPs: 連接后獲取的地址.  注意此處只需要分配一個固定的IP地址即可.


# 3.5) 開啟內核轉發功能,系統其它設置打開轉發:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p

四 啟動,停止,查看狀態:

# 4.0 )不中斷活躍連接的情況下重新加載配置文件:
wg syncconf wg0 <(wg-quick strip wg0)

# 4.1 ) 啟動 wireguard:
wg-quick down wg0 && wg-quick up wg0

wg-quick up wg0

[root@bj-vpn wireguard]# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8' /etc/resolv.conf
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 4.2 ) 停止 wireguard:
wg-quick down wg0

[root@bj-vpn wireguard]# wg-quick down wg0
[#] ip link delete dev wg0
[#] umount /etc/resolv.conf
[#] iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 4.3 ) 查看wireguard 客戶端狀態:
wg

[root@bj-vpn wireguard]# wg
interface: wg0
  public key: sIPp+stGXBz
  private key: (hidden)
  listening port: 51820

peer: zy3IkHgq6Sd
  allowed ips: 10.10.0.2/32

peer: t6ab6f6j2Rw
  allowed ips: 10.10.0.3/32

五 客戶端的下載安裝:

https://www.wireguard.com/install/

# windows:
https://download.wireguard.com/windows-client/wireguard-installer.exe

打開軟件 - 左下角 新建空隧道 - (填寫內容) - 起個名字 


[Interface]
PrivateKey =  < 這里填寫 Client 上 privatekey 的內容 >    
ListenPort = 51820
Address = 10.10.0.2/24
DNS = 8.8.8.8      # 連接后使用的 DNS, 如果要防止 DNS 泄露,建議使用內網的 DNS 服務器

[Peer]
PublicKey =  < 這里填寫 Server 上 publickey 的內容 >
AllowedIPs = 10.10.0.0/16, 192.168.10.0/24, 192.168.2.0/23     # 指定要訪問的服務端網段,或者設置0.0.0.0/0來進行全局代理.
Endpoint = 公網IP:51820    # 服務端公網暴露地址,51280 指定的端口,可以更改.
PersistentKeepalive = 25

*** 如果有其他的就按照上面的[Peer]繼續添加即可.

保存后直接點-連接-就能看到是否連接上,日志項也能查看過程.


**** 重要提示 ****:
    server 端[Peer]下的AllowedIPs 是寫鏈接過來后獲取的IP地址. 類似分配一個固定的IP地址
    client 端[Peer]下的AllowedIPs 是寫的那些網段的路由可以通過WG0轉發,如果全局都要走wireguard就設置成0.0.0.0/0 。

示意圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM