远程访问局域网设备通常采用内网穿透或VPN隧道。WireGuard是一种采用UDP协议的新型VPN技术。WireGuard提供的是节点与节点的网络连接形式,除了可以实现传统VPN以服务器为网关的星型拓扑结构,还可以节点与任意其他节点进行连接,实现节点间的全互联,解决了单一网关导致的网络瓶颈。

  AlmaLinux为CentOS停止维护后的继承者,是Red Hat的下游版本,拥有10年生命周期。本次实验采用AlmaLinux安装Docker来实现WireGuard的部署。

目录

一、AlmaLinux配置

1.配置阿里云镜像源

2.更新系统应用

3.配置密钥远程登录

二、安装Docker

1. 方法一:通过宝塔面板安装

2. 方法二:终端直接安装

三、安装WireGuard(Place1/wg-access-server项目)

1. 安装

2. 检查容器运行状态

3. 端口放通

4. 访问管理面板

四、客户端配置

1. 配置信息生成

2. 导入配置信息

3. 连接建立:

五、容器运行异常排查

1. 查看Docker容器运行日志:

2. 错误处理


  WireGuard跨区域组网需要至少一台机器具有公网IP或在局域网内组网。如果仅有一台机器具备公网IP(可为云服务器),想要组建跨地域局域网,只能采用单一网关的星型拓扑结构,本实验将演示该情况下的跨地域组网。

一、AlmaLinux配置

1.配置阿里云镜像源

  配置方法参考:almalinux镜像源配置 - 阿里巴巴开源镜像站

2.更新系统应用

  终端内执行以下命令:

dnf upgrade -y
reboot

3.配置密钥远程登录

1)密钥文件产生

  法一:云服务提供商后台管理面板直接生成.pem的密钥文件。将.pem文件Load到puttygen.exe软件中。复制“Public key for pasting into OpenSSH authorized_keys file”文本框里的公钥。点击Save private key,保存.ppk的私钥文件用于后续登录。

  法二:打开puttygen.exe软件,密钥类型选择RSA,点击Generate按钮,产生过程中不停晃动鼠标直至产生完毕。复制“Public key for pasting into OpenSSH authorized_keys file”文本框里的公钥。点击Save private key,保存.ppk的私钥文件用于后续登录。

2)Putty密钥登录

  ① 配置登录信息

图1 设定服务器IP和端口

图2 指定登录账户

图3 指定私钥文件

  ② 点击Open按钮即可登录。

二、安装Docker

1. 方法一:通过宝塔面板安装

1)防火墙配置:宝塔面板从CentOS 7开始只支持firewalld防火墙。关闭iptables并开启firewalld。

systemctl stop iptables
systemctl disable iptables
systemctl start firewalld
systemctl enable firewalld

2)面板安装:

  安装方法:宝塔面板下载和安装

  复制CentOS安装脚本进行安装即可。

  【注意】需在服务器安全组放通宝塔面板管理页面端口

3)Docker安装:登录面板后,前往 软件商店,安装 Docker管理器

  后续Docker的使用可以直接在宝塔面板内可视化管理,也可在终端中使用docker命令管理。

2. 方法二:终端直接安装

官方指导文档:Install Docker Engine on CentOS | Docker Documentation

1)启动防火墙

systemctl stop iptables
systemctl disable iptables
systemctl start firewalld
systemctl enable firewalld

2)安装docker

yum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

3)启动docker

systemctl start docker
systemctl enable docker

4)docker管理常用命令

# 查看所有容器
docker ps -a
# 删除指定的容器(<dockerID>替换实际的容器ID)
docker rm <dockerID>
# 查看镜像
docker images
# 删除指定的镜像(<imageID>替换实际的镜像ID)
docker rmi <imageID>
# 查看前1000行日志(法1)
docker logs --tail=1000 <dockerID>
# 查看前1000行日志(法2)
cat /var/lib/docker/containers/<dockerID>/<dockerID>-json.log
# 清除日志
cat /dev/null > /var/lib/docker/containers/<dockerID>/<dockerID>-json.log

三、安装WireGuard(Place1/wg-access-server项目)

  项目地址:https://github.com/Place1/wg-access-server

  配置说明:Configuration - wg-access-server

1. 安装

  终端中运行以下命令:

docker run -d \--cap-add NET_ADMIN \--device /dev/net/tun:/dev/net/tun \-v wg-access-server-data:/data \-e "WG_ADMIN_USERNAME=admin" \-e "WG_ADMIN_PASSWORD=123456" \-e "WG_WIREGUARD_PRIVATE_KEY=xxxxxxxx" \-e "WG_PORT=51821" \-e "WG_WIREGUARD_PORT=51820" \-e "WG_VPN_CIDR=10.0.32.0/24" \-e "WG_VPN_ALLOWED_IPS=0.0.0.0/0, ::/0" \-e "WG_LOG_LEVEL=info" \-e “WG_VPN_GATEWAY_INTERFACE=eth0” \-p 51821:51821/tcp \-p 51820:51820/udp \--restart unless-stopped \--privileged=true \place1/wg-access-server

  【配置说明】(红色部分对应的配置必须修改)

  ① 14~15行配置端口映射,:前为宿主机端口,:后为容器内端口。14行为管理面板的TCP端口,15行为WireGuard的UDP端口。宿主机端口需在服务器安全组放通。

  ② 16行用于开机自启动容器

  ③ 5~13行配置容器的环境变量,5~6行配置管理面板的用户名密码,7行为服务器私钥(可安装WireGuard的windows客户端,新建空隧道自动产生一个)。8~9行为容器内的管理面板TCP端口、WireGuard的UDP端口(建议此端口容器内和宿主机一致,否则在Web面板生成的客户端配置文件端口号是容器内的,需要手动改为宿主机的才能正确连接)。10行为客户端IP地址段。11行为允许访问的目标IP段。12行为全局日志级别。13行为WireGuard网关流量转发接口,需更改为宿主机的外网接口(可在终端内执行ifconfig命令,来查看外网接口名)。

2. 检查容器运行状态

docker ps -a

  如果运行状态中为Up,则表明容器运行正常。如果运行状态中一直为Restarting,则需要进一步从日志中检查错误原因。(详见 五、容器运行异常排查

3. 端口放通

  在服务器安全组中,放通TCP和UDP端口。本例中WireGuard管理面板为TCP (51821),WireGuard为UDP (51820)。

4. 访问管理面板

  管理面板地址:http://服务器公网IP:管理面板TCP端口号(本例端口为51820)

  输入配置的用户名和密码登入管理面板(本例为admin/123456)

四、客户端配置

  WireGuard应用下载:https://www.wireguard.com/install/

1. 配置信息生成

  在WireGuard管理面板中,输入设备名称后点击 “Add” 添加设备。

2. 导入配置信息

  电脑客户端直接下载配置文件,在WireGuard应用内新建隧道,将配置文件导入至隧道。手机客户端直接扫码即可添加节点。

图4 WireGuard节点添加

图5 配置信息获取

3. 连接建立:

1)点击 连接 按钮即可使能当前节点。

2)在Windows系统中打开CMD命令提示符,通过Ping其他节点,如果Ping正常即表明连接正常(注意:如果Ping的是Windows节点,则需要正确配置Windows系统防火墙或暂时关闭)。

图6 Ping测试

五、容器运行异常排查

1. 查看Docker容器运行日志:

1)记录对应容器的ID

docker ps -a

图7 容器ID查看

2)查看docker日志,根据日志错误情况进行解决。

docker logs <dockerID>

2. 错误处理

  下面仅提供一种错误的解决办法,其他错误自行查找资料。

错误exit status 3: iptables v1.8.3 (legacy): can't initialize iptables table `filter': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.

解决:升级Linux Kernel内核。

  参考:centos上docker无法启动 | 宋祎超

  内核的阿里云镜像:linux-kernel安装包下载_开源镜像站-阿里云

步骤:

1)获取内核文件

  找到合适版本或最新版本:https://mirrors.aliyun.com/linux-kernel/v5.x/linux-5.19.4.tar.gz

  终端执行:

wget https://mirrors.aliyun.com/linux-kernel/v5.x/linux-5.19.4.tar.gz
tar -xvf linux-5.19.4.tar.gz

2)配置内核选项

cd linux-5.19.4
make menuconfig

  按《参考》链接内容的说明设置好配置选项并保存。

  如果提示Unable to find the ncurses package. 则按照提示安装ncurses-devel 或 libncurses-dev其中一个即可。

3)编译模块(约需要2小时)

make clean
make modules -j 8  # 8核编译

4)安装模块

make modules_install

提示】如果安装模块时,出现以下错误,则需要检查编译是否顺利完成。

sed: can't read modules.order: No such file or directory

make: *** [Makefile:1478: __modinst_pre] Error 2

  可留意编译过程中的错误输出信息,或者重新执行make modules -j 8进行模块编译,将会直接打印错误信息。如果编译的错误信息为:

make[1]: *** No rule to make target 'certs/rhel.pem', needed by 'certs/x509_certificate_list'.  Stop.

  则编辑 linux-5.19.4 目录里的 .config 文件:

vim .config

  在vim编辑器内,查找并注释掉以下内容:

#CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"
#CONFIG_DEBUG_INFO_BTF=y

  保存后输入make modules -j 8重新编译即可。执行命令后如有选项则直接回车保持默认,直到屏幕显示开始编译。

5)编译并安装内核

make bzImage
make install

6)生效配置

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

7)查看内核版本是否已更新

uname -r

8)查看docker容器是否已经处于up状态

docker ps -a

局域网组建(一) 远程办公实现 — WireGuard组建跨地域局域网(AlmaLinux+Docker)相关推荐

  1. 要在某一房间中两台计算机之间,关于局域网、广域网和互联网的组建和因特网的接入,回答下列问题。要在某一房间中两台计算机之间实现网络通信,下列方法不可行的是...

    集市交易中的叫卖声和敲击声是最一种特殊的民俗现象,局域建和接入间中计算机之间实其共同特点为 网广网为什么有人会产生心理困扰() 牙周组织在受到异常的力作用其损伤一直存在,域网因特房但也会有组织修复 ...

  2. 思科模拟器小型局域网组建(4子网,RIPV2组建)

    思科模拟器小型局域网组建(4子网,RIPV2组建) Windows下载模拟器 连接设备 配置路由 配置电脑 总结 Windows下载模拟器 我在如下文章中下载并按照文章提示安装 链接: 思科模拟器的简 ...

  3. wireguard 组多地局域网

    wireguard 组多地局域网 现公司分布各地,欧洲,美洲,越南,香港,台湾,日本,国内,通过国际专线费用又高,而是用ipsec又有速度和其他的限制. 特别是国内分公司太多,专线费用也是很庞大的一笔 ...

  4. YTFS——跨地域的分布式存储(WAN存储)

    Ceph/HDFS等传统分布式存储属于中心化存储,整个存储网络都位于同一机房,能提供服务器级别的故障域隔离,但无法应对机房甚至城市级别的故障,包括但不限于停电.断网.地震.火灾.911式恐怖袭击.天津 ...

  5. UCloud与NTT达成合作,提供可靠跨地域混合云服务

    近日,UCloud宣布与NTT Communications东亚地区总部NTT Com Asia (以下简称"NTT Com Asia") 达成合作伙伴协议.双方将发挥各自优势,通 ...

  6. Harbor: 跨数据中心复制Docker镜像的开源实现

    2019独角兽企业重金招聘Python工程师标准>>> Harbor: 跨数据中心复制Docker镜像的开源实现 博客分类: docker VMware公司3月份开源了企业级Regi ...

  7. 企业网络带宽需求和跨地域网络连接的优化

    SD-WAN仍然是一项相对年轻的技术,虽然已取得重大进展,但还有很长的路要走,属于SD-WAN的市场远未稳定下来. 一项调查发现,36%的受访者表示,由于网络基础架构和性能任务的复杂性不断提高,他们正 ...

  8. 局域网上传文件到服务器很慢,win10局域网内传文件很慢怎么办_win10局域网内文件传输很慢如何处理-win7之家...

    在使用win10系统的过程中,相同的环境下我们可以将电脑设置成局域网模式,这样就能够进行文件的传输,非常方便,可是最近有用户发现自己的win10系统局域网内传送文件很慢,那么win10局域网内传文件很 ...

  9. DLA实现跨地域、跨实例的多AnalyticDB读写访问

    介绍 实时数据仓库ADB(AnalyticDB)云产品:https://www.aliyun.com/produc... 数据湖分析服务DLA(Data Lake Analytics)云产品:http ...

最新文章

  1. 如何用ABAP代码读取CDS view association的数据
  2. Deep Learning | 深度学习介绍与基本概念
  3. php推荐引擎算法,推荐系统,第 2 部分: 开源引擎简介
  4. Winsock—I/O模型之选择模型(一)
  5. mysql创建表的时候,字段尽量不要为NULL
  6. 马斯克:人脑“带宽”有限,需要用人工智能加持提高连接速度
  7. iOS开发实战小知识点(五)——获取JS meta异常
  8. Node.js 连接 MySQL 插入 TEXT 类型报错问题
  9. 再谈angularjs DI(Dependency Injection)
  10. c语言编程常见问题解答,C语言编程常见问题解答之常用函数的包含文件
  11. 红旗linux 装xp,XP下硬盘安装红旗LINUX
  12. 佳士得于5月19日至27日以NFT形式拍卖安迪·沃霍尔作品
  13. lisp型材库_基于Visual Lisp的面向对象零件库的开发
  14. 2021“智荟杯”浦发百度高校极客挑战赛——比赛总结
  15. 车联网智能终端GB/T 32960国标协议规范 、国标新能源车联网终端GB/T32960标准T-BOX应用
  16. Pygame游戏编程
  17. 尼日利亚通货膨胀加剧和MogaFX外汇短缺加剧贬值投机
  18. 计算机电源选平衡,电脑里选择电源计划哪个好
  19. 数模备战——基础知识笔记
  20. 小米会成为三星没落的因素吗?

热门文章

  1. linux实验下载,linux实验linux实验.doc
  2. 《计算机视觉》集大网课学习笔记【6】
  3. 为人处世之道_金玉良言
  4. 慕课网:C++ 数据结构
  5. 计算机基础考核方案,计算机应用基础考核实施方案
  6. 芯旺微 chipon 型号KF32A156的flash驱动flash driver放置在ram的操作方式
  7. Android 抖音爱心动画,Android动画 - 仿抖音加载动画
  8. Nand Flash驱动, ECC, MTD, FTL, 文件系统
  9. 微信(小程序),怎么制作一个能够获取 “ 空气质量、温度、湿度、气压、风向 ” 等的【天气模块】
  10. java cpu监控_如何在Java中监视计算机的CPU,内存和磁盘使用情况?