远程办公无忧:在Ubuntu上搭建高效内网访问系统

165 阅读6分钟

简介

因业务需求,需要在员工不在公司局域网的环境下能够访问到公司的内网资源。文章将介绍如何在Ubuntu系统上安装和配置这两者,满足远程办公和分布式团队的需求。

安装步骤

1、安装 Easy-RSA

sudo apt update
sudo apt install -y easy-rsa

2、初始化 Easy-RSA 环境

创建一个目录来存放证书和密钥:

sudo mkdir -p /etc/openvpn/easy-rsa
sudo cp -ai /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa

3、初始化 Easy-RSA 环境

sudo ./easyrsa init-pki

4、生成 CA 证书

sudo ./easyrsa build-ca

在提示时,输入 CA 证书的名称(例如 Easy-RSA-CA)和密码。这些信息将用于后续的证书生成。

5、生成服务器证书

运行以下命令生成服务器密钥对:

sudo ./easyrsa gen-req server nopass

这将生成一个服务器密钥对,并提示您输入一些信息(如服务器名称、组织名称等)。 运行以下命令签发服务器证书:

sudo ./easyrsa sign-req server server

在提示时,输入 yes 以确认签发证书。

6、 生成客户端证书

运行以下命令生成客户端密钥对:

sudo ./easyrsa gen-req client1 nopass

这将生成一个客户端密钥对,并提示您输入一些信息(如客户端名称、组织名称等)。 运行以下命令签发客户端证书:

sudo ./easyrsa sign-req client client1

在提示时,输入 yes 以确认签发证书。

7、 生成 Diffie-Hellman 参数

Diffie-Hellman 参数用于加密通信。运行以下命令生成这些参数:

sudo ./easyrsa gen-dh

8、生成 ta.key

#用于 HMAC(基于哈希的消息认证码)身份验证,以防止中间人攻击
sudo ./easyrsa gen-dh
sudo openvpn --genkey --secret ta.key

//生成时间较久,需要耐心等待

9、 复制证书和密钥到 OpenVPN 配置目录

将生成的证书和密钥复制到 OpenVPN 的配置目录:

sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/
sudo cp pki/issued/client1.crt /etc/openvpn/
sudo cp pki/private/client1.key /etc/openvpn/
sudo cp pki/private/ta.key /etc/openvpn/

10、配置 OpenVPN

编辑服务端配置文件 /etc/openvpn/server.conf,确保以下配置项正确:

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem

示例:

# 设置 OpenVPN 服务端的 IP 地址和子网掩码。服务端将在这个子网内分配 IP 地址给客户端
server 192.168.255.0 255.255.255.0
# 设置日志的详细程度
verb 3
# 指定服务端的私钥、证书文件路径
key /etc/openvpn/server.key
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
# 指定 Diffie-Hellman 参数文件路径。它用于加密密钥交换,确保客户端和服务端之间的通信安全。
dh /etc/openvpn/dh.pem
# 指定 TLS 验证文件路径
tls-auth /etc/openvpn/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun
ifconfig-pool-persist ipp.txt
proto udp
#proto tcp
# Rely on Docker to do port mapping, internally always 1194
port 1194
# 指定服务端使用的网络设备类型为 tun,用于实现三层网络通信。
dev tun
topology subnet
#client-to-client
client-config-dir /etc/openvpn/ccd
status /tmp/openvpn-status.log
user nobody
group nogroup
comp-lzo no
duplicate-cn
### Route Configurations Below
route 192.168.254.0 255.255.255.0
### Push Configurations Below
# 推送给客户端的配置
push "block-outside-dns"
push "dhcp-option DNS 114.114.114.114"
push "dhcp-option DNS 8.8.4.4"
push "comp-lzo no"
push "route 192.168.1.123 255.255.255.255"

11、 配置客户端 将客户端证书和密钥复制到客户端设备上,并确保客户端配置文件中包含以下内容:

ca /path/to/ca.crt
cert /path/to/client1.crt
key /path/to/client1.key

示例:

client
dev tun
proto udp
remote 公网服务器IP 11949
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-CBC
auth SHA256
verb 3

# CA 证书
<ca>
$(cat /etc/openvpn/ca.crt)
</ca>

# 客户端证书
<cert>
$(cat /etc/openvpn/client1.crt)
</cert>

# 客户端密钥
<key>
$(cat /etc/openvpn/client1.key)
</key>

# TLS-Auth
<tls-auth>
$(cat /etc/openvpn/ta.key)
</tls-auth>

也可以直接将证书密钥等信息放置放在ovpn文件中,如图: 在这里插入图片描述

12、 启动服务

启动服务:

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

13、设置IP转发

#临时启用 IP 转发
#运行以下命令临时启用 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久启用 IP 转发
#为了使 IP 转发在系统重启后仍然生效,需要修改 /etc/sysctl.conf 文件:
sudo nano /etc/sysctl.conf
#在文件中找到以下行并取消注释(如果存在):
net.ipv4.ip_forward=1
#如果没有找到,可以手动添加该行。
#保存文件后,运行以下命令应用更改:
sudo sysctl -p
#验证 IP 转发是否启用
#运行以下命令验证 IP 转发是否已启用:
sysctl net.ipv4.ip_forward
#如果输出为:
net.ipv4.ip_forward = 1
#则表示 IP 转发已启用。
#设置 iptables 进行 NAT 转发,假设你的服务端内网网卡为eth0,该命令让内网设备能够通过一个公网接口访问外部网络
sudo iptables -t nat -A POSTROUTING -s 192.168.255.0/24 -o eth0 -j MASQUERADE

FRP搭建步骤

1、下载frp

wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz

2、配置 frps

sudo tar -xvf frp_0.50.0_linux_amd64.tar.gz -C /usr/local
sudo mv frp_0.50.0_linux_amd64 /usr/local/frp 

3、创建并编辑frps配置文件

sudo vim /usr/local/frp/frps.ini
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# token建议改成复杂一些的
token = <你的密码>  # 这个token之后在客户端会用到
# frp管理后台端口,按需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,建议改成复杂一些的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

4、将其配置成系统服务

sudo vim /etc/systemd/system/frps.service
[Unit]
Description=frps service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

5、启动服务端

sudo systemctl daemon-reload
sudo systemctl start frps
sudo systemctl enable frps
#启动后查看一下服务状态
sudo systemctl status frps

6、frpc客户端配置

[common]
server_addr = 你的服务端IP地址
#服务端配置的连接端口
server_port = 7000
token = 123456
[openvpn]
type = udp
local_ip = 127.0.0.1
local_port = 1194
# FRP 服务端为 OpenVPN 服务分配的代理端口,按需分配,需要在服务端开放该端口
remote_port = 11949

ps:下载、启动等步骤与服务端一致,可根据上方配置进行修改。

7、开放端口示例

#服务端端口
sudo ufw allow 11949/udp
sudo ufw allow 7000/tcp
sudo ufw reload

ps:若是服务端是云服务器,还需要在其内置安全组中开放相关端口,还有,请妥善保管好证书与密钥,还有ovpn文件。 ############################################################################################################

今日推荐 小说:《天之下》 小说简介:昆仑纪元,分治天下的九大门派为新一届盟主之位明争暗斗,关外,萨教蛮族卷土重来……乱世中,芸芸众生百态沉浮,九大家英杰辈出,最终汇成一首大江湖时代的磅礴史诗,并推动天下大势由分治走向大一统。

在这里插入图片描述