wireguard实现虚拟私有网络搭建
1、準備條件
- 一臺阿里云ECS服務器有公網IP,centos7系統
- 一臺實驗室內網服務器,可以ping通外網,centos7系統
- 自己的pc可以正常上網,Windows11系統
實現在自己PC上通過隧道連接到內網服務器原理圖
2、環境配置
linux內核版本大于5.6已經內置有wireguard,只需要用modprobe wireguard加載一下就可以,
低于5.6則需要升級內核版本
以下是升級內核過程(參考通過WireGuard搭建隧道實現內網穿透 - 簡書 (jianshu.com))
? # 查看當前內核版本uname--kernel-release#安裝必要工具,卸載舊的內核源碼包yum -y install epel-release curlsed -i "0,/enabled=0/s//enabled=1/" /etc/yum.repos.d/epel.repoyum remove -y kernel-devel# 導入公鑰rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org# 升級安裝elreporpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm# 安裝新版本工具包yum --disablerepo="*" --enablerepo="elrepo-kernel" listavailableyum -y --enablerepo=elrepo-kernel install kernel-ml# 設置默認啟動sed -i"s/GRUB_DEFAULT=saved/GRUB_DEFAULT=0/" /etc/default/grubgrub2-mkconfig-o /boot/grub2/grub.cfgwget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-devel-6.15.10-1.el7.elrepo.x86_64.rpmrpm -ivhkernel-ml-devel-6.15.10-1.el7.elrepo.x86_64.rpm#內核版本大于5.6就行,可以自己去elrepo找yum -y--enablerepo=elrepo-kernel install kernel-ml-devel# 重啟reboot#查看升級后的內核版本uname--kernel-releasemodprobe wireguard #加載模塊??3、安裝wireguard工具
yum insatll wireguard-tools#開啟IP轉發echo?"net.ipv4.ip_forward?=?1"?>>?/etc/sysctl.confsysctl?-p?4、進入存儲路徑調整權限
cd/etc/wireguard/
chmod 0777/etc/wireguard
#調整目錄默認權限
umask 077
5、生成三對密鑰(密鑰都在ECS上面生成)
#生成私鑰
wg genkey> server.key
wg genkey> client1.key
wg genkey > client2.key
#通過私鑰生成公鑰
wg pubkey< server.key > server.key.pub
wg pubkey< client1.key > client1.key.pub
wg pubkey < client2.key > client2.key.pub
5、配置ECS作為server(其實wireguard沒有server和client概念,這里只是方便區分和理解)
vim/etc/wireguard/wg0.conf?? 加入如下配置
[Interface]PrivateKey = server.key # 填寫本機的privatekey 內容Address = 192.168.4.121 #本機虛擬局域網IPPostUp?? =iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEPostDown = iptables -D FORWARD -i wg0 -j ACCEPT;iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -jMASQUERADE#注意eth0需要為本機網卡名稱ListenPort = 40001 # 監聽端口DNS = 8.8.8.8MTU = 1420[Peer]PublicKey =?client1.key.pub? #client1的公鑰AllowedIPs = 192.168.4.101/32 #客戶端client1所使用的IP[Peer]PublicKey =?client2.key.pub? #client2的公鑰AllowedIPs = 192.168.4.111/32 #客戶端Client2所使用的IP同時在ECS的控制臺安全組配置安全規則,放行40001端口
命令行最好關閉一下防火墻,systemctl stop firewalld
#啟動wg0
wg-quickup wg0
#關閉wg0
wg-quickdown wg0
設置開機自啟動
systemctlenable wg-quick@wg0
查看wg,我這里是已經都配置好了兩個peer的狀態
ip a查看
6、配置自己的pc端作為client1
從官網下載一個windows版本的客戶端app,網址為 https://www.wireguard.com/install/
我這有個下載好的百度網盤 請輸入提取碼
提取碼:8888
安裝
左下角點擊添加空隧道
來到這個界面
刪除原有配置,加入如下配置
[Interface]PrivateKey =uEFMMjDnvTXwpe87um9i1Gw0KgGm4AQpmrm7EmkY=? ? ?此處為client1的私鑰Address = 192.168.4.101/32MTU = 1420[Peer]PublicKey =E1SqvWKHrhHORZyLKQvDrq3wbFtq3HJsDhb0stK1Q=? ? ? 此處為server的公鑰AllowedIPs = 192.168.4.0/24Endpoint = ECS公網IP:40001??? #修改IP和放行的端口PersistentKeepalive = 15點擊activate就可以連接
pc可以成功ping ECS的虛擬地址,(先用client ping server端建立連接)
ecs也可以成功ping pc
7、內網服務器配置為client2
vim /etc/wireguard/wg0.conf? 加入如下配置
[Interface]PrivateKey =KPjxjGwTHESCmXNuskN0g3kzHAKW34T+EYVGPqrkU=?#此處為client2的私鑰Address = 192.168.4.111 #此處為peer規定的客戶端IPMTU = 1420[Peer]PublicKey =E1SqvWKHrhHORZyLK90QvDrq3Ftq3HJsDhb0stK1Q=?#此處為server的公鑰AllowedIPs = 192.168.4.0/24 #此處為允許的服務器IPEndpoint = ECS的IP:40001 #服務器IP+端口PersistentKeepalive = 15同樣的方式創建wg
ping ECS虛擬IP成功
ECSping內網IP成功
最后用pc ping 內網ip成功
通了之后就可以從PC通過ssh到內網服務器,單純內網穿透不如用frp更方便些,但wireguard還有其他功能比較好用。
總結
以上是生活随笔為你收集整理的wireguard实现虚拟私有网络搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos7 系统更改apache默认
- 下一篇: Qemu 安装