openvpn组网实现文明6局域网联机

参考博客:

  1. 文明 6 联机方法与实践:https://blog.yllhwa.com/2023/02/24/%E6%96%87%E6%98%8E6%E8%81%94%E6%9C%BA%E6%96%B9%E6%B3%95%E4%B8%8E%E5%AE%9E%E8%B7%B5/

  2. 通过OpenVPN部署虚拟局域网实现文明6联机:https://gist.github.com/Pylogmon/31338d48a14848da552c90c13c7c1770

一、 申请获取VPS

1.1 阿里云申请VPS

阿里云申请ECS,最便宜的那一档,2CPU2核,免费额度300,可免费使用3k小时

1.2 安全组配置

直接放开全部流量出入,防止出现麻烦

二、 搭建openvpn服务端

参考博客:

主要参考此博客——Centos7安装与配置OpenVPN服务器:https://cloud.tencent.com/developer/article/1871073

CentOS 7安装配置OpenVPN服务器:https://www.simaek.com/archives/203/

2.1 安装openvpn、 EasyRSA等

首先更新软件包。

yum -y update

虽然也是可以不进行更新直接安装。

安装 OpenVPN 和 EasyRSA

安装 OpenVPN、Firewalld 软件包以及用于生成各种证书的 EasyRSA

yum -y install openvpn easy-rsa firewalld

如果未能成功安装 OpenVPN,则可能需要先安装一下 Epel 库。

yum install epel-release -y

注意:这里安装的openvpn是同时包含了server端和client端的,所以在/etc/openvpn/下会同时有server和client目录

启动或者其他操作的时候,命令需要指定server端systemctl start openvpn-server@server

对于CA证书、密钥以及配置文件等内容,也应放在server里,而非/etc/openvpn/根目录下

2.2 生成 CA 证书、服务端密钥与共享密钥

这里步骤比较多。

首先需要初始化 PKI

cd ~
/usr/share/easy-rsa/3/easyrsa init-pki

接下来是生成 CA 证书

/usr/share/easy-rsa/3/easyrsa build-ca nopass

其中 nopass 表示不加密私钥,主要是方便后面导出公钥与颁发服务器证书

再来是生成交互密钥

/usr/share/easy-rsa/3/easyrsa gen-dh

开始生成服务端密钥

/usr/share/easy-rsa/3/easyrsa build-server-full vpn-server nopass

接下来生成客户端密钥,如果未开启同证书允许多人登陆,则需要多次执行生成对应的客户端密钥

/usr/share/easy-rsa/3/easyrsa build-client-full vpn-client-01 nopass

最后是生成证书交互列表,如果不需要 crl-verify 则可以跳过

/usr/share/easy-rsa/3/easyrsa gen-crl

其实到这一步需要的证书都以及生成好了,如果你开启了 tls-auth 则还需要生成共享密钥

openvpn --genkey --secret pki/ta.key

在上面所有证书都生成完毕之后,我们需要将相关证书拷贝到 OpenVPN 的配置文件夹中(似乎也可以在 conf 文件中使用绝对路径)

cp pki/ca.crt /etc/openvpn/server/ca.crt
cp pki/dh.pem /etc/openvpn/server/dh.pem
cp pki/issued/vpn-server.crt /etc/openvpn/server/server.crt
cp pki/private/vpn-server.key /etc/openvpn/server/server.key
cp pki/ta.key /etc/openvpn/server/ta.key
cp pki/crl.pem /etc/openvpn/server/crl.pem

2.3 配置服务端

OpenVPN 配置文件有许多可定制化,具体请查阅官方文档。

cd /etc/openvpn/server
vim server.conf

如下内容为博主的配置文件,针对https://cloud.tencent.com/developer/article/1871073进行了一些修改,

对于文章https://cloud.tencent.com/developer/article/1871073内配置项,博主遇到的问题(卡了很久的地方)如下:

  1. 配置用户文件client-config-dir需要设置为…/client
  2. 需要将配置文件、CA证书、密钥等文件均放置在/etc/openvpn/server/中,而不是/etc/openvpn/下
  3. 配置duplicate-cn以允许多用户使用相同密钥
  4. 配置client-to-client以使得客户之间可见
  5. IP pool下的server并不是服务器IP地址,而是分配的IP网段,无需修改

据说dev字段使用的网络适配器需要设定为tap-vpn,因为文明6只使用tap而不是用tun,故博主对此项也进行了修改

将以下内容粘贴进去

# Secure OpenVPN Server Config
# Basic Connection Config
dev tap-vpn
proto udp
port 1194
keepalive 10 120
max-clients 10
# Certs
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
# Ciphers and Hardening
reneg-sec 0
remote-cert-tls client
crl-verify crl.pem
tls-version-min 1.2
cipher AES-256-CBC
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
# Drop Privs
user nobody
group nobody
# IP pool
server 172.31.100.0 255.255.255.0
topology subnet
ifconfig-pool-persist ipp.txt
client-config-dir ../client
# Misc
persist-key
persist-tun
comp-lzo
# DHCP Push options force all traffic through VPN and sets DNS servers
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
# Logging
log-append /var/log/openvpn.log
status /var/log/openvpn-status.log
verb 3
# allow multi user using same ca
duplicate-cn
# allow users see each other
client-to-client

启动服务端并让其开机自动启动

systemctl start openvpn-server@server
systemctl enable openvpn-server@server

2.4 配置防火墙与流量转发

放行 OpenVPN 入网流量与开启 IP 伪装

firewall-cmd --permanent --add-service openvpn
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

检查是否开启流量转发

sysctl -a | grep net.ipv4.ip_forward

确保net.ipv4.ip_forward 等于 1,如果不是,则需要修改一下

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

2.5 配置客户端

客户端需要拷贝以下文件

cd ~
mkdir vpn-client-01-config
cp pki/ca.crt vpn-client-01-config/ca.crt
cp pki/issued/vpn-client-01.crt vpn-client-01-config/client.crt
cp pki/private/vpn-client-01.key vpn-client-01-config/client.key
cp pki/ta.key vpn-client-01-config/ta.key

最后生成客户端配置文件

vim vpn-client-01-config/client.ovpn

粘贴下面内容

注意remote的IP地址需要修改为服务器的IP地址,dev的值修改为tap-vpn

# Secure OpenVPN Client Config
#viscosity dns full
#viscosity usepeerdns true
#viscosity dhcp true
tls-client
pull
client
dev tap-vpn
proto udp
remote 123.123.123.123 1194
redirect-gateway def1
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
tls-auth ta.key 1
remote-cert-tls server
ns-cert-type server
key-direction 1
cipher AES-256-CBC
tls-version-min 1.2
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

然后将vpn-client-01-config目录打包为zip包,传输给各个客户。

2.6 备注

日志查看:在/etc/openvpn/server/server.conf中可以配置日志位置,博主配置为/var/log/openvpn.log

重启: sudo systemctl restart openvpn-server@server

三、客户端的配置与连接

3.1 下载客户端

在官网https://openvpn.net/community-downloads/即可下载,注意需要下载v2,而不是v3(因为v3不再支持tap方式)

按照默认流程安装即可

3.2 导入配置文件

解压2.5步骤中生成的zip包,将配置文件中的如下四项配置修改为实际的绝对路径:

然后openvpn客户端右键->导入->导入配置文件即可连接

注意:如果导入配置文件后连接失败,可以在openvpn客户端右键->显示日志,查看报错信息

如果是因为配置文件配置错误导致的连接失败,可以在以下解决方案中二选一:

  1. openvpn客户端右键->编辑配置文件,直接修改配置
  2. 修改解压出来的配置文件后,在openvpn客户端重新导入该文件

3.3 安装WinIPBradocast用于全局广播

在https://github.com/dechamps/WinIPBroadcast中下载安装,即装即用

3.4 检测是否连接成功

客户端终端中ipconfig一下,查看自己分配到的ip地址,查看该项:


各客户机之间互相ping,如果往返均能ping通,则说明已经在同一个内网里啦!自此,可以实现文明6的局域网联机!

3.5 异常问题说明

有遇到某个小伙伴电脑的网卡问题,表现情况是他能ping通我们和服务器内网IP,但我们(包括服务器)均无法ping通他。观察其设备管理器可见他的网络适配器中的TAP出现问题,无法启动:

设备 ROOT\NET\0000 在启动时出现问题。

驱动程序名称: oem40.inf
类 GUID: {4d36e972-e325-11ce-bfc1-08002be10318}
服务: tap0901
低层筛选程序: 
高层筛选程序: 
问题: 0x0
问题状态: 0xC00000E5

事件列表如下,均为未启动设备,无法启动:

而正常的TAP安装好后直接就是只有已启动设备的事件:

目前对该情况解决方案未知,且为极少数情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值