提醒

您正在访问搜索引擎投递页面,强烈建议您:回到主站 查看原文 - 使用OpenVPN组建内网

memo 编辑 最后修改时间 2023/08/17 16:07

使用OpenVPN组建内网

https://github.com/OpenVPN/openvpn

服务端

https://openvpn.net/community-downloads/

下载自己需要的版本

https://swupdate.openvpn.org/community/releases/openvpn-2.6.5.tar.gz

安装服务端

$ wget https://swupdate.openvpn.org/community/releases/openvpn-2.6.5.tar.gz
$ tar -zxf openvpn-2.6.5.tar.gz
$ cd openvpn-<version>
$ ./configure
$ make
$ sudo make install

配置服务端

// 没有这个目录就自己创建一个
$ cd /etc/openvpn
$ vim server.conf
// server.conf 内容如下
port 8890
proto tcp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ip.txt

push "route 10.8.0.0 255.255.255.0"
# push "redirect-gateway def1 bypass-dhcp"
# push "dhcp-option DNS 223.5.5.5"
# push "dhcp-option DNS 223.6.6.6"

client-to-client
keepalive 10 120

user www
group www
persist-key
persist-tun
status /etc/openvpn/status.log
verb 3

生成dh.pem

$ cd /etc/openvpn
$ openssl dhparam -out dh.pem 2048

安装Easy-RSA工具

Easy-RSA是一个用于生成证书和密钥的工具集

$ sudo apt-get install easy-rsa
$ cd /usr/share/easy-rsa/
// 初始化 PKI
$ ./easyrsa init-pki

生成 CA(证书授权机构)证书和密钥

$ cd /usr/share/easy-rsa/
// 生成 CA(证书授权机构)证书和密钥
$ ./easyrsa build-ca
// 生成服务器证书和密钥
$ ./easyrsa gen-req server nopass
// 签署服务器证书
$ ./easyrsa sign-req server server

// 把生成的证书复制在 /etc/openvpn
$ cp /usr/share/easy-rsa/pki/ca.crt /etc/openvpn/
$ cp /usr/share/easy-rsa/pki/issued/server.crt /etc/openvpn/
$ cp /usr/share/easy-rsa/pki/private/server.key /etc/openvpn/

生成客户端证书

// 生成客户端证书和密钥
$ ./easyrsa gen-req client nopass
// 签署客户端证书
$ ./easyrsa sign-req client client
// 导出证书和密钥
$ ./easyrsa export-p12 client

客户端

https://openvpn.net/community-downloads/

你也可以通过我提供的下载链接直接下载

https://swupdate.openvpn.org/community/releases/OpenVPN-2.6.4-I001-amd64.msi

// sxin.ovpn 文件内容如下
client
dev tun
proto tcp
remote vpn.jsx6.com 8890
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key

# comp-lzo
verb 3

问题处理

checking for PKCS11_HELPER... no
checking for LIBNL_GENL... no
configure: error: libnl-genl-3.0 package not found or too old. Is the development package and pkg-config installed? Must be version 3.4.0 or newer for DCO

# 安装 libnl-genl-3.0 开发包
sudo yum install libnl3-devel
# 安装 pkg-config
sudo yum install pkgconfig
# 确认 libnl-genl 版本
pkg-config --modversion libnl-genl-3.0
3.2.28 # 版本号低于3.4.0,尝试更新或升级 libnl-genl 包

版本号低于3.4.0,尝试更新或升级 libnl-genl 包

sudo yum update
# 手动编译 libnl-genl
# 下载 libnl 源码
wget https://github.com/thom311/libnl/releases/download/libnl3_5_0/libnl-3.5.0.tar.gz
tar -xzvf libnl-3.5.0.tar.gz
cd libnl-3.5.0

# 编译和安装
./configure
make
sudo make install

# 继续编译 openvpn
cd ~/openvpn-2.6.5/
set -x LDFLAGS "-Wl,-rpath -Wl,/usr/local/lib"
set -x PKG_CONFIG_PATH "/usr/local/lib/pkgconfig"
# 验证版本号
pkg-config --modversion libnl-genl-3.0
3.5.0
./configure

mv -f $depbase.Tpo $depbase.Po
dco_linux.c: 在函数‘ovpn_nl_cb_error’中:
dco_linux.c:303:27: 错误:‘NLMSGERR_ATTR_MAX’未声明(在此函数内第一次使用)
struct nlattr *tb_msg[NLMSGERR_ATTR_MAX + 1];
^
dco_linux.c:303:27: 附注:每个未声明的标识符在其出现的函数内只报告一次
dco_linux.c:311:30: 错误:‘NLM_F_ACK_TLVS’未声明(在此函数内第一次使用)
if (!(nlh->nlmsg_flags & NLM_F_ACK_TLVS))
^
dco_linux.c:316:30: 错误:‘NLM_F_CAPPED’未声明(在此函数内第一次使用)
if (!(nlh->nlmsg_flags & NLM_F_CAPPED))
^
dco_linux.c:330:16: 错误:‘NLMSGERR_ATTR_MSG’未声明(在此函数内第一次使用)
if (tb_msg[NLMSGERR_ATTR_MSG])
^
dco_linux.c:303:20: 警告:未使用的变量‘tb_msg’ [-Wunused-variable]
struct nlattr *tb_msg[NLMSGERR_ATTR_MAX + 1];
^
dco_linux.c: 在文件作用域:
cc1: 警告:无法识别的命令行选项“-Wno-stringop-truncation” [默认启用]
make[3]: *** [dco_linux.o] 错误 1
make[3]: 离开目录“/home/www/openvpn-2.6.5/src/openvpn”
make[2]: *** [all-recursive] 错误 1
make[2]: 离开目录“/home/www/openvpn-2.6.5/src”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/home/www/openvpn-2.6.5”
make: *** [all] 错误 2

这个错误提示表明在编译 dco_linux.c 文件时出现了问题,缺少一些宏定义或头文件。在新版本的编译器中,一些宏和标志可能已经改变,导致了这些错误。

./configure CFLAGS="-DNLMSGERR_ATTR_MAX=16 -DNLM_F_ACK_TLVS=0x200 -DNLM_F_CAPPED=0x100 -DNLMSGERR_ATTR_MSG=0"
make
2 条评论
未登录用户
支持 Markdown 语法
@sxin0
sxin0发表于大约 2 年前

six six six

@acane77
acane77发表于超过 1 年前

打卡