文章 > NetWork > wireguard vpn配置 

wireguard vpn配置 

泡杯长岛冰茶 · 2024-09-11 352 NetWork
分享 收藏

本环境使用aws ec2

1.top信息

image-20240911215021150


2.准备一台云主机

略...

登录上云主机

~/桌面$ eks
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-1012-aws x86_64)
# root权限
sudo -i

3.安装wireguard

#安装wireguard软件
apt install wireguard  -y
# 重一下服务器
reboot

#开启IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

# 创建目录并修改权限
cd /etc/wireguard/
chmod 0777 /etc/wireguard

#调整目录默认权限
umask 077

# 生成服务器与客户端秘钥
wg genkey > server.key
wg genkey > client1.key
# 生成服务器与客户端生成公钥
wg pubkey < server.key > server.key.pub
wg pubkey < client1.key > client1.key.pub
# 查看所有秘钥
cat server.key && cat server.key.pub && cat client1.key && cat client1.key.pub
sLrtBTjqHA1dfZXlfGTOcMTaJfPRsQeNUAszNbLJyUc=
gb/uEe9S2ppdf7karJYp85Mbnrl5LAP5hUo9q8b1LH8=
cDEmaEfuFgBhqS3LRBxugQzL0Kld7d2fiDdnR2JTAF8=
9ZlIhlJNJNb+ZDvYBK6f5zmlKM1oTQeeC/P0iPBziSM=


# 创建配置文件
cat <<EOF> wg0.conf
[Interface]
PrivateKey = $(cat server.key) # 填写本机的privatekey
Address = 10.101.81.1 #本机虚拟局域网IP
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens5 -j MASQUERADE
#注意ens5需要为本机网卡名称
ListenPort = 50814 # 监听端口
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey =  $(cat client1.key.pub)  #自动client1的公钥
AllowedIPs = 10.101.81.2/24 #客户端所使用的IP
EOF



# 设置服务器开机自启动
systemctl enable wg-quick@wg0

#启动wg0
wg-quick up wg0
#关闭wg0
wg-quick down wg0

# wireguard客户端下载地址
https://www.wireguard.com/install/

client  configure

# 客户端配置(以client1为例)
cat <<EOF> client1.conf
[Interface]
PrivateKey = $(cat client1.key) #此处为client1的私钥
Address = 10.101.81.2 #此处为peer规定的客户端IP
MTU = 1420

[Peer]
PublicKey = $(cat server.key.pub) #此处为server的公钥
AllowedIPs = 10.101.81.0/24,10.0.0.0/16  # 此处为客户端路由到wg0的网段信息
Endpoint = EIP:50814 #服务器对端IP+端口
EOF

# 增加服务器客户端节点client2
#生成私钥
wg genkey > client2.key

#通过私钥生成公钥
wg pubkey < client2.key > client2.key.pub

#将peer公钥加入wg0.conf配置
cat <<EOF>> wg0.conf
[Peer]
PublicKey =  $(cat client2.key.pub)  #自动client2的公钥
AllowedIPs = 10.101.81.3/24 #客户端Client2所使用的IP"
EOF

4.通过容器安装wg-easy

docker pull weejewel/wg-easy

docker run -d \
 --name=wg-easy \
 -e WG_HOST=123.123.123.123 (这里输入服务器的公网IP) \
 -e PASSWORD=passwd123 (这里输入你的密码) \
 -e WG_DEFAULT_ADDRESS=10.101.8.x (默认IP地址)\
 -e WG_DEFAULT_DNS=8.8.8.8 (默认DNS)\
 -e WG_ALLOWED_IPS=10.0.0.0/24 (允许连接的IP段)\
 -e WG_PERSISTENT_KEEPALIVE=25 (重连间隔)\
 -v ~/.wg-easy:/etc/wireguard \
 -p 51820:51820/udp \
 -p 51821:51821/tcp \
 --cap-add=NET_ADMIN \
 --cap-add=SYS_MODULE \
 --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
 --sysctl="net.ipv4.ip_forward=1" \
 --restart unless-stopped \
 weejewel/wg-easy
 
# 更新容器命令  
docker stop wg-easy
docker rm wg-easy
docker pull weejewel/wg-easy

5.验证vpn

# 查看private网段的资源信息
ubuntu@ip-10-0-1-138:~$ kubectl  get pods -owide
NAME     READY   STATUS    RESTARTS   AGE   IP           NODE                                      NOMINATED NODE   READINESS GATES
nginx0   1/1     Running   0          25h   10.0.4.231   ip-10-0-4-63.ap-east-1.compute.internal   <none>           <none>
# 登录vpn client 
curl 10.0.4.231  可以访问



点击加载更多