当前位置: 首页 > news >正文

WireGuard搭建网络,供整个公司使用

一、清理现有配置(如已有失败尝试)

# 停止并删除现有 WireGuard 接口
sudo wg-quick down wg0
sudo rm -rf /etc/wireguard/wg0.conf

# 验证接口已删除 (执行后应该看不到 wg0)
ifconfig

二、服务器端完整配置流程

1. 安装 WireGuard
sudo apt update && sudo apt upgrade -y
sudo apt install wireguard resolvconf qrencode -y
2. 生成密钥对
# 生成服务器密钥
sudo mkdir -p /etc/wireguard
wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
sudo chmod 600 /etc/wireguard/*.key
3. 创建配置文件 /etc/wireguard/wg0.conf
cat << EOF | sudo tee /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(sudo cat /etc/wireguard/private.key)
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
EOF
4. 启用内核转发
sudo sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf
sudo sysctl -p
5. 防火墙配置(重要!)
# 允许 WireGuard 端口
sudo ufw allow 51820/udp

# 允许 NAT 转发
sudo ufw --force enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
6. 启动服务
sudo systemctl enable wg-quick@wg0
sudo wg-quick up wg0

# 验证接口 (应该看到 wg0 的 inet 10.8.0.1)
ifconfig wg0

三、生成员工客户端配置(以员工 “john” 为例)

1. 生成客户端密钥
CLIENT_NAME="john"
CLIENT_IP="10.8.0.2/32"

# 生成客户端密钥
wg genkey | tee /etc/wireguard/${CLIENT_NAME}_private.key | wg pubkey | sudo tee /etc/wireguard/${CLIENT_NAME}_public.key
2. 添加到服务端配置
sudo wg set wg0 peer $(cat /etc/wireguard/${CLIENT_NAME}_public.key) allowed-ips ${CLIENT_IP}
sudo wg-quick save wg0
3. 生成客户端配置文件 /root/${CLIENT_NAME}.conf
cat << EOF > /root/${CLIENT_NAME}.conf
[Interface]
PrivateKey = $(cat /etc/wireguard/${CLIENT_NAME}_private.key)
Address = ${CLIENT_IP}
DNS = 8.8.8.8

[Peer]
PublicKey = $(sudo cat /etc/wireguard/public.key)
Endpoint = 139.180.197.84:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

# 生成二维码(方便移动端)
qrencode -t ansiutf8 < /root/${CLIENT_NAME}.conf

四、连接测试验证

1. 在客户端设备执行:
# Windows/Mac:下载官方客户端导入配置文件
# Linux:sudo wg-quick up john.conf

# 连接后验证:
ping 10.8.0.1  # 应该能通
curl ifconfig.me  # 显示服务器IP 139.180.197.84
2. 服务端监控:
watch -n 1 wg  # 实时查看连接状态

五、高级管理技巧

1. 批量创建用户脚本
#!/bin/bash
for i in {1..20}; do
    CLIENT_NAME="employee${i}"
    CLIENT_IP="10.8.0.$((i+1))/32"
    
    wg genkey | tee /tmp/${CLIENT_NAME}_private.key | wg pubkey | tee /tmp/${CLIENT_NAME}_public.key
    
    sudo wg set wg0 peer $(cat /tmp/${CLIENT_NAME}_public.key) allowed-ips ${CLIENT_IP}
    
    cat << EOF > /root/${CLIENT_NAME}.conf
[Interface]
PrivateKey = $(cat /tmp/${CLIENT_NAME}_private.key)
Address = ${CLIENT_IP}
DNS = 8.8.8.8

[Peer]
PublicKey = $(sudo cat /etc/wireguard/public.key)
Endpoint = 139.180.197.84:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF
    
    rm /tmp/${CLIENT_NAME}_*
done
sudo wg-quick save wg0
2. 限制访问范围(示例:仅允许访问服务器内网)
# 修改客户端的 AllowedIPs 为:
AllowedIPs = 10.25.96.0/20  # 根据您的 enp8s0 子网 10.25.96.3/255.255.240.0

六、故障排查

1. 连接失败检查项:
# 确认服务端监听状态
sudo ss -uapn | grep 51820

# 查看防火墙规则
sudo ufw status numbered

# 检查内核转发是否启用
cat /proc/sys/net/ipv4/ip_forward
2. 日志查看
journalctl -u wg-quick@wg0 -f

以上流程已根据您的服务器IP 139.180.197.84 适配,实际使用时注意:

  1. 每个员工的 .conf 文件需要单独分发
  2. 若使用企业内网DNS,需修改配置文件中的DNS地址
  3. 建议定期备份 /etc/wireguard 目录

相关文章:

  • 自动计算相机pose,pyrender渲染例子
  • QILSTE H6-C210TCG高亮翠绿光LED灯珠 发光二极管LED
  • 使用 `#pragma comment(lib, “xxx.lib“)` 简化 DLL 依赖管理
  • (十 八)趣学设计模式 之 观察者模式!
  • vscode通过ssh远程连接(linux系统)不能跳转问题
  • CSS—显示模式display、定位position、元素溢出overflow、float浮动
  • 【入门Web安全之前端学习的侧重点和针对性的建议】
  • java后端开发day26--常用API(一)
  • 浅克隆与深克隆区别
  • MySQL SQL 优化专题
  • PCL的ConditionalRemoval(1)
  • 如何注册并加入一个联盟营销平台?详细步骤+风控指南
  • 基础的排序算法下(交换排序和归并排序)
  • WSL下使用git克隆失败解决
  • 结合PyMuPDF+pdfplumber,删除PDF指定文本后面的内容
  • 京准电钟:NTP校时服务器于安防监控系统应用方案
  • GitHub教程
  • 每日一题——无重复字符的最长子串
  • java 与 c++在遍历 map 数据结构上的一些差异
  • Android系统_Surface绘制流程
  • 微博:严厉打击对肖某董某事件蹭炒热点、编造故事博流量等行为
  • 刘洪洁已任六安市委副书记、市政府党组书记
  • 此前显示售罄的火车票“五一”前大量放出来了?12306回应
  • 中国空间站多项太空实验已取得成果,未来将陆续开展千余项研究
  • “五一”逃离城市计划:带上帐篷去大自然里充电
  • 日菲同意扩大安全合作,外交部:反对任何在本地区拉帮结派的做法