一,需求
需要自己搭建VPDN的LAC,LNS。
二,实现方法
使用softether搭建客户端、服务端和内网设备,分别部署在三台服务器上,具体组网如下。
131作vpdn服务端。133作为客户端。132作为内网设备。131的eno2接132的eno2。
现在的目标是,希望133客户端能否和132内网设备进行通讯。
准备将VPN的IP配置为192.16.1.1
Centos7.5 系统使用L2TP/IPSec搭建服务器 - 菜鸟学院 先参考再说
三,环境配置
三台服务器都安装CentOS Linux release 7.9.2009系统。
系统工具安装
yum -y install gcc zlib-devel openssl-devel readline-devel ncurses-devel
yum -y install wget
yum -y install net-tools
yum -y install traceroute
服务端安装
1. wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/tag/v4.41-9782-beta/softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz
2. tar -zxvf softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz
3. cd vpnsever/
4. make
客户端安装
1. wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/tag/v4.41-9782-beta/softether-vpnclient-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz
2. tar -zxvf softether-vpnclient-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz
3. cd vpnclient/
4. make
wget有时候下载不成功,原因懒得排查,直接网页下载后拷贝进去也行。
实际发现,上面的编译成功后虽然能够运行,但是并不包含代码,重新下载。
需要安装perl5,openssl1.1.1,添加到路径,ldconfig后,然后再下载ttps://www.softether-download.com/files/softether/v4.43-9799-beta-2023.08.31-tree/Source_Code/softether-src-v4.43-9799-beta.tar.gz解压后进行编译。
编译报错
Encrypt.c:(.text+0x19be):对‘HMAC_CTX_new’未定义的引用
找到HMAC_CTX_new是在openssl中定义的。也就是说编译的时候用的是旧版本的openssl,导致异常。需要链接到新的openssl,修改默认Makefile ,新增 -L /usr/local/lib64/
四,VPDN配置
4.1 server配置
先启动server bin/vpnserver/vpnserver start
bin/vpnserver/vpncmd
默认可以创建一个
1,创建hub
VPN Server>HubCreate
HubCreate 命令 - 创建新的虚拟 HUB
新创建的虚拟 HUB 的名字: SCSHUB
请输入密码。要取消,请按下 Ctrl + D 键。
密码 : ******
确认输入: ******
2. 输入HUB进入hub配置界面
VPN Server/SCSHUB>SecureNatHostSet
SecureNatHostSet 命令 - 更改安全网络功能的虚拟主机的网络接口设置
MAC 地址: 5E-3B-8E-CA-DA-31
IP 地址: 192.168.31.1
子网掩码: 255.255.255.0
VPN Server/SCSHUB>SecureNatEnable
3. 添加用户
VPN Server/SCSHUB>UserCreate
UserCreate 命令 - 创建用户
用户名: 132
加入群组名称:
用户全名: scs132
用户描述:命令成功完成。
VPN Server/SCSHUB>UserList
UserList 命令 - 获取用户列表
项目 |价值
------------+--------
用户名 |132
全名 |scs132
所属组 |-
描述 |
认证方法 |密码验证
登录回数 |0
上次登录时间|(无)
有效期 |没有到期
传输字节 |0
传输数据包 |0
命令成功完成。
VPN Server/SCSHUB>UserPasswordSet
添加密码
4,配置地址分发范围
VPN Server/SCSHUB>DhcpSet
DhcpSet 命令 - 更改安全网络功能的虚拟 DHCP 服务器功能的设置
分发地址范围的开始: 192.168.31.10
分发地址范围的结束: 192.168.31.200
子网掩码: 255.255.255.0
租赁期限 (补): 7200
默认网关 (可以不设定): 192.168.31.1
DNS 服务器 1 (可以不设定): 192.168.31.1
DNS 服务器 2 (可以不设定):
域名:
保存日志 (yes/no): yes
命令成功完成。
5,NAT设置
enable即可。
4.2 client配置
bin/vpnclient/vpnclient start
然后bin/vpncmd/vpncmd 2 localhost NicCreate
VPN Client>NIClist
NicList 命令 - 获取虚拟 LAN 卡列表
项目 |价值
----------------+----------------------------------------------
虚拟网络适配器名|SCS_LAN
状态 |已启用
MAC 地址 |5E43B944DB6C
版本 |Version 4.29 Build 9680 (Simplified_Chinese)
accountcreate
AccountPasswordSet
VPN Client>accountlist
AccountList 命令 - 获取连接设置列表
项目 |价值
-----------------------+---------------------------------------
VPN 连接设置名称 |133
状态 |已连接
VPN Server 主机名(地址)|172.16.138.131:443 (直接的 TCP/IP 连接)
虚拟 HUB 名称 |SCS
虚拟网络适配器名 |SCS_LAN
dhclient vpn_scs_lan(这一步有可能不成功,需要先杀掉dhclient再试一下)
10.129.60.0/22 via 172.16.138.254 dev eno1
172.16.118.0/24 via 172.16.138.254 dev eno1
172.16.138.0/24 dev eno1 proto kernel scope link src 172.16.138.133
192.168.30.0/24 dev vpn_scs_lan scope link src 192.168.30.10
ip a
8: vpn_scs_lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 5e:43:b9:44:db:6c brd ff:ff:ff:ff:ff:ff
inet 192.168.30.10/24 brd 192.168.30.255 scope global dynamic vpn_scs_lan
valid_lft 6058sec preferred_lft 6058sec
inet6 fe80::5c43:b9ff:fe44:db6c/64 scope link
valid_lft forever preferred_lft forever
遗留问题一,怎么在服务端造出内网设备???
Server端重新配置,删除NAT和DHCP功能。
创建网桥,连接虚拟 Hub 与 物理网卡
VPN Server>BridgeCreate
BridgeCreate command - Create Local Bridge Connection
Virtual Hub Name to Create Bridge: vpn #指定网桥要连接的虚拟 Hub
Bridge Destination Device Name: enp2s0 #指定网桥要连接的物理网卡
前面的交换机也换成能够分配地址的路由器。
遗留问题二,
现在131服务端ip1 172.16.138.131 dev eno1 ,ip2 10.16.1.131 dev enp2s0
现在133客户端ip1 172.16.138.133 dev eno1 ,ip2 10.16.1.133 dev enp2s0
现在132内网设备 ip1 172.16.138.132 dev eno1 ,ip2 10.16.1.132 dev enp2s0
132内网设备可以ping通 10.16.1.131,10.16.1.1,10.16.1.133
131服务端可以ping通10.16.1.1,10.16.1.132,无法pin通10.16.1.133
133客户端可以ping通10.16.1.1,10.16.1.132,无法pin通10.16.1.131
这是为什么?