Ubuntu 22 裸机部署 SoftEther 实现远程访问调试配置 EVE-NG:含编译安装、Hub 配置、NAT 设置与远程调试WireShark抓包与客户端连接指南

这篇内容,晦涩难懂,没有Linux与网络基础的,直接绕路吧
实在想研究的可以多读几遍,自行领悟奥秘,或者问问AI

本文是基于上一篇,裸机部署EVE-NG的基础上,通过 SoftEther 来实现访问 其内部网络,这样才能够使用EVE-NG的所有功能(通过Web管理设备、WireShark)调试,因为EVE-NG的特性(WireShark要22端口传输,Telnet是32769~32897端口等特性),所以如果没有全端口的独立IP,只能做VPN隧道,本文就是接上一篇文章,解决这一问题的方法:https://blog.youkuaiyun.com/CingSyuan/article/details/155070492

环境

这是我的部署环境,我是打算通过 公网访问 EVE-NG 的,但是对外端口有限
我是在我朋友的 PVE服务器 上部署的,理论上你可以在任何 x86 Ubuntu 22 LTS 平台部署
比如云服务器、物理机、ESXI、PVE、VMware vSphere、超融合平台、Open Stack等

Proxmox VE 9.0.6
Intel® Xeon® Platinum 8259CL CPU
Linux 6.14 11-1-pve
对外端口范围:32769~32897(必须)、以及Web(必须)、SSH/FTP等端口(建议),任意一个SSL VPN端口


我打算使用 SoftEtherVPN 做一个 SSL 打通外网到裸机内网
这样就能访问防火墙等设备的web管理页面了
如果你的裸机没有公网,套一个内网穿透也是可以的


需要下载 SoftEtherVPN
https://github.com/SoftEtherVPN/SoftEtherVPN/releases


编译/安装

安装编译依赖

apt update

apt install -y sudo wget curl vim libsodium-dev pkg-config cmake build-essential libssl-dev libreadline-dev zlib1g-dev

# 验证依赖都是安装完毕,出版本号就是OK了
root@pveng:~# pkg-config --modversion libsodium
1.0.18

下载 SoftEtherVPN,当前版本是5.2.5188,下载 tar.xz 结尾的
自己通过FTP传到 /usr/local

cd /usr/local

tar -xJf SoftEtherVPN-5.2.5188.tar.xz

cd SoftEtherVPN-5.2.5188/
mkdir build
cd build

cmake

root@pveng:/usr/local/SoftEtherVPN-5.2.5188/build# sudo cmake ..
-- Build date: 04/11/2025
-- Build time: 08:38:14
-- Checking for one of the modules 'libsodium'
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "3.0.2")  
-- Alg enablement unchanged
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found suitable version "3.0.2", minimum required is "1.1.1")  
-- Creating Release build
-- Build will store public keys in PKCS#8 structures
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found suitable version "3.0.2", minimum required is "3.0")  
-- liboqs found: Include dir at $<BUILD_INTERFACE:/usr/local/SoftEtherVPN-5.2.5188/src/Mayaqua/3rdparty/liboqs/src>;$<INSTALL_INTERFACE:include> (STATIC_LIBRARY)
fatal: not a git repository (or any of the parent directories): .git
-- Building commit  in /usr/local/SoftEtherVPN-5.2.5188
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/SoftEtherVPN-5.2.5188/build

make

root@pveng:/usr/local/SoftEtherVPN-5.2.5188/build# sudo make -j$(nproc)
[100%] Linking C shared library ../../libcedar.so
[100%] Built target cedar
[100%] Building C object src/vpnclient/CMakeFiles/vpnclient.dir/vpncsvc.c.o
[100%] Building C object src/vpncmd/CMakeFiles/vpncmd.dir/vpncmd.c.o
[100%] Building C object src/vpntest/CMakeFiles/vpntest.dir/vpntest.c.o
[100%] Building C object src/vpnserver/CMakeFiles/vpnserver.dir/vpnserver.c.o
[100%] Building C object src/vpnbridge/CMakeFiles/vpnbridge.dir/vpnbridge.c.o
[100%] Linking C executable ../../vpnclient
[100%] Linking C executable ../../vpncmd
[100%] Linking C executable ../../vpnserver
[100%] Linking C executable ../../vpnbridge
[100%] Linking C executable ../../vpntest
[100%] Built target vpnclient
[100%] Built target vpncmd
[100%] Built target vpnserver
[100%] Built target vpnbridge
[100%] Built target vpntest

make install

root@pveng:/usr/local/SoftEtherVPN-5.2.5188/build# sudo make install
----------------------------------------------------------------------------------------------------------------------------
Build completed successfully.

Execute 'vpnserver start' to run the SoftEther VPN Server background service.
Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.
Execute 'vpnclient start' to run the SoftEther VPN Client background service.
Execute 'vpncmd' to run the SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.
----------------------------------------------------------------------------------------------------------------------------

配置 SoftEtherVPN

认识架构

┌──────────────────────────────┐
│ SoftEther VPN Server         │
│  ├── 管理密码 (ServerPassword)│ ← 整个服务器的root权限
│  ├── 监听端口 (Listener)      │ ← 如 443, 63120 等
│  ├── 虚拟 Hub (Virtual Hub)  │ ← 虚拟交换机
│  │   ├── Hub 管理密码         │
│  │   ├── 用户 (User)         │ ← VPN登录账号
│  │   ├── SecureNAT 模块       │ ← 内置NAT/DHCP网关
│  │   └── Bridge/Local Bridg  │ ← 与物理网卡或虚拟网桥连接
│  └── 日志/证书/设置等          │
└──────────────────────────────┘


简单介绍,Server、Hub、User都用各自的密码,都需要需要保存下来
我们需要进入Server层,修改Server密码,创建一个测试Hub,熟悉一下
然后创建EVEHub,添加监听端口,再把EVEHub桥接到接口pnet0上

层级类似概念功能
Server整个VPN服务器管理所有Hub、端口、全局设置
Hub一个独立虚拟交换机每个Hub可独立拥有用户、NAT、认证方式

配置 SoftEtherVPN

开启 SoftEtherVPN 服务

sudo vpnserver start

进入 SoftEtherVPN 交互界面,每次进入都是这样操作的

sudo vpncmd  # 进入SoftEtherVPN交互界面的命令,
1  # 交互
localhost
(回车)

并配置Server密码与Default,Default可以不配

ServerPasswordSet  # 设置Server密码
hdD6qkyvaikm1Em9hwA9

Hub DEFAULT  # 进入一个叫DEFAULT的Hub,默认存在,一般不用
SetHubPassword  # 设置当前所在Hub的密码
hdD6qkyvaikm1Em9hwA9

Hub  # 返回上一级,即Server层

一些操作介绍

ServerStatusGet  # 查看整体服务器状态
HubList  # 查看所有Hub
ListenerList  # 查看所有监听端口

Hub DEFAULT  # 进入一个叫DEFAULT的Hub
UserList  # 查看当前Hub的用户
Hub  # 返回Server层

创建一个测试Hub

HubCreate TestHub  # 创建一个叫TestHub的Hub用于测试
Hub TestHub  # 进入TestHub
StatusGet  # 查看当前所在的Hub的信息
Hub  # 返回到Server
HubDelete TestHub  # 删除一个叫TestHub的Hub

创建EVEHub

HubCreate EVEHub /PASSWORD:hdD6qkyvaikm1Em9hwA9  # 创建EVEHub并设置密码
Hub EVEHub  # 进入EVEHub
UserCreate vpnuser  # 在当前所在Hub中创建用户
(回车)-(vpnuser)-(eve-ng)
UserPasswordSet vpnuser  # 设置vpnuser的密码
hdD6qkyvaikm1Em9hwA9

添加监听端口

Hub  # 返回Server
ListenerCreate 63120  # 监听63120
ListenerList  # 查看所有监听端口

关闭防火墙

仅限测试环境才能这么做
关闭 ufw、iptables、nftables

sudo ufw disable
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo nft flush ruleset
sudo systemctl stop nftables
sudo systemctl disable nftables


检查状态

sudo ufw status verbose && sudo iptables -L -n -v && sudo systemctl status nftables

桥接网卡Hub

创建并绑定桥接Hub

BridgeCreate EVEHub /DEVICE:pnet0  # 绑定EVEHub到接口pnet0
BridgeList  # 查看桥接状态
Hub EVEHub  # 进入EVEHub
Online  # 使该Hub上限,下线是Offline

查看桥接状态

VPN Server/EVEHub>BridgeList
BridgeList command - Get List of Local Bridge Connection
Number|Virtual Hub Name|Network Adapter or Tap Device Name|Status
------+----------------+----------------------------------+---------
1     |EVEHub          |pnet0                             |Operating
The command completed successfully.

Windows安装客户端

下载 Windows client x64 版本的
softether-vpnclient-5.02.5187.x64.exe 这种的
安装就行了


连接并验证

打开 SoftEtherVPN 先添加一个 VPN网卡
然后添加连接,输入主机名/端口/Hub名/账户/密码


配置连接
在这里插入图片描述


进行连接
在这里插入图片描述


打开带Web界面的防火墙,并开启http/https

ip http enable
ip https enable

在这里插入图片描述


查看Hub与桥接
在这里插入图片描述


测试ping
在这里插入图片描述


访问Web
在这里插入图片描述


重置配置

如果你配置错了,可以提供以下方案重置配置,似乎无法重置Server密码
关闭服务,终止进程

sudo systemctl stop softether-vpnserver
sudo pkill vpnserver

删除配置文件与日志文件

sudo rm -f /usr/local/libexec/softether/vpn_server.config
sudo rm -rf /usr/local/libexec/softether/server_log/*
sudo rm -rf /usr/local/libexec/softether/packet_log/*
sudo rm -rf /usr/local/libexec/softether/security_log/*

重启服务

sudo systemctl restart softether-vpnserver

BugFix 架构调整 修复无法WireShak调试

上面我们用的是桥接,把SoftEther VPN桥接到VE-NG的pnet0上
但是这样虽然可以访问设备Web界面,但是由于没有22端口
WireShark调试只能走22,无法调试22
因为目前是通过公网:端口访问EVE-NG界面,通过169临时地址访问设备Web界面
因为EVE-NGweb界面是公网,所以WireShark默认也走公网:22,肯定通不了
只能想办法,让所有的访问都走内网IP

所以就不能桥接了,但是由于PVE(或者其他云厂商)会做隔离,会出现以下情况
比如内网网关IP为192.168.1.1,你的服务器IP是192.168.1.10
你通过VPN连进去之后,只能访问192.168.1.1
所以打进去还得做个NAT伪装成另一个网段,这样就o了
不知道你们能不能懂

删除原来的桥接

Hub EVEHub
BridgeList          # 确认有 pnet0 且 Operating
BridgeOffline /DEVICE:pnet0
BridgeDelete  /DEVICE:pnet0

配置NAT与DHCP

SecureNatDisable
SecureNatEnable
DhcpEnable
DhcpSet
# 按提示输入:
# Start: 192.168.30.10
# End:   192.168.30.200
# Mask:  255.255.255.0
# Lease: 86400
# GW:    192.168.30.1
# DNS1:  8.8.8.8
# DNS2:  114.114.114.114

在Hub内查询配置情况

NatGet
DhcpGet

配置Linux转发

echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

# vim /etc/sysctl.conf
添加:net.ipv4.ip_forward=1

# iptables(清理旧表可选)
iptables -F
iptables -t nat -F

# 让 VPN 子网经过 pnet0 出去时做源地址伪装(关键)
iptables -t nat -A POSTROUTING -o pnet0 -s 192.168.30.0/24 -j MASQUERADE

# 放行访问
iptables -A FORWARD -s 192.168.30.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.30.0/24 -s 192.168.1.0/24 -j ACCEPT

在这里插入图片描述


说明

知识共享许可声明

除特别说明外,本文包含的原创文字、图片与资料均依据
CC BY-SA 4.0 知识共享许可协议 授权发布。

您可以在注明作者与来源的前提下自由转载、修改与商业使用,
但必须以相同协议共享衍生内容

在嵌入式Linux系统中安装配置SoftEther V-HUB服务器是一个涉及到网络设置和防火墙调整的复杂过程。为了帮助你解决端口冲突的问题,以下是一步一步的操作指南: 参考资源链接:[Linux系统下SoftEther服务器的使用方法](https://wenku.youkuaiyun.com/doc/645b956c95996c03ac2d8361?spm=1055.2569.3001.10343) 首先,确保你有root权限来更改系统配置。然后,你可以按照以下步骤来更改SoftEther V-HUB的默认侦听端口。 1. 下载SoftEther VPN Server的安装包并解压,通过命令行进入解压后的目录。 2. 使用文本编辑器打开V-HUB配置文件,通常是“Hub.config.xml”。 3. 在配置文件中找到<Port>标签,修改默认的TCP端口7777和443。例如,将其改为<Port>8888</Port>和<Port>8443</Port>。 4. 保存文件并退出编辑器。 5. 使用命令“sudo ./vpncmd”启动SoftEther VPN Command Line Tool。 6. 输入“ServerAdd”命令并按照提示输入服务器的IP地址和刚才修改的端口号。 7. 输入“HubCreate”命令创建一个新的虚拟Hub,并输入Hub的名称和密码。 完成上述步骤后,SoftEther V-HUB应已成功配置在新的端口上运行,且不会Apache等服务冲突。 需要注意的是,更改端口后,还需要相应地配置防火墙规则以允许新的端口通信。这通常可以通过iptables命令或者系统自带的防火墙配置工具来完成。 此外,如果你需要进一步深入了解如何使用SoftEther VPN Server,或者想要探索如何在嵌入式系统中部署和管理其他网络服务,《Linux系统下SoftEther服务器的使用方法》是一份宝贵的资料,它详细介绍了SoftEther服务器的使用技巧、配置方法和故障排除,适合希望深化嵌入式系统网络知识的读者。 参考资源链接:[Linux系统下SoftEther服务器的使用方法](https://wenku.youkuaiyun.com/doc/645b956c95996c03ac2d8361?spm=1055.2569.3001.10343)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值