序言
使用 Open*** + Frp 技术搭建本地局域网,需准备好本地服务器环境,一台用于搭建 Open*** 服务端、Frp 客户端;以及一台云服务器(提供公网 IP),用于搭建 Frp 服务端。Frp 可将本地 Open*** Server 监听的 1194 端口放到公网服务器上,用于外网用户进行拨号。
\ | 本地服务器(192.168.2.157) | 云服务器(公网 IP) |
---|
Frp Server | | √ | Frp Client | √ | | Open*** Server | √ | |
一、安装 Open***
1.更新 yum 源
更新 Base 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新 epel 源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.安装软件包
yum -y install open*** easy-rsa
3.配置 easy-rsa-3 及 Open***
3.1.生成 server 端证书
cp -r /usr/share/easy-rsa/ /etc/open***/easy-rsa
cd /etc/open***/easy-rsa/
\rm 3 3.0
cd 3.0.8/
cp /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-req server nopass
./easyrsa sign server server
./easyrsa gen-dh
3.2.生成 client 端证书
cp -r /usr/share/easy-rsa/ /etc/open***/client/easy-rsa
cd /etc/open***/client/easy-rsa/
\rm 3 3.0
cd 3.0.8/
cp /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
./easyrsa init-pki
./easyrsa gen-req client nopass
cd /etc/open***/easy-rsa/3.0.8/
./easyrsa import-req /etc/open***/client/easy-rsa/3.0.8/pki/reqs/client.req client
./easyrsa sign client client
3.3.整理证书
mkdir /etc/open***/certs
cd /etc/open***/certs
open*** --genkey --secret ta.key
cp /etc/open***/easy-rsa/3.0.8/pki/dh.pem ./
cp /etc/open***/easy-rsa/3.0.8/pki/ca.crt ./
cp /etc/open***/easy-rsa/3.0.8/pki/issued/server.crt ./
cp /etc/open***/easy-rsa/3.0.8/pki/private/server.key ./
[root@node1 certs]
总用量 24
-rw-------. 1 root root 1172 7月 26 15:08 ca.crt
-rw-------. 1 root root 424 7月 26 15:08 dh.pem
-rw-------. 1 root root 4552 7月 26 15:08 server.crt
-rw-------. 1 root root 1704 7月 26 15:09 server.key
-rw-------. 1 root root 636 7月 26 14:59 ta.key
mkdir /etc/open***/client/client
cd /etc/open***/client/client/
cp /etc/open***/certs/ta.key ./
cp /etc/open***/easy-rsa/3.0.8/pki/ca.crt ./
cp /etc/open***/easy-rsa/3.0.8/pki/issued/client.crt ./
cp /etc/open***/client/easy-rsa/3.0.8/pki/private/client.key ./
[root@node1 client]
总用量 20
-rw-------. 1 root root 1172 7月 26 15:09 ca.crt
-rw-------. 1 root root 4432 7月 26 15:10 client.crt
-rw-------. 1 root root 1704 7月 26 15:10 client.key
-rw-------. 1 root root 636 7月 26 15:11 ta.key
3.4.编辑 server 端配置文件
vim /etc/open***/server.conf
port 1194
proto tcp
dev tun
ca /etc/open***/certs/ca.crt
cert /etc/open***/certs/server.crt
key /etc/open***/certs/server.key
dh /etc/open***/certs/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 223.6.6.6"
client-to-client
keepalive 10 120
tls-auth /etc/open***/certs/ta.key 0
cipher AES-256-GCM
comp-lzo
max-clients 100
persist-key
persist-tun
status open***-status.log
log open***.log
verb 3
3.5.编辑 client 端配置文件
vim /etc/open***/client.ovpn
client
dev tun
proto tcp
remote 公网IP 9411
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
comp-lzo
auth-nocache
verb 4
4.配置路由转发 及 iptables
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.8.0.0/24 anywhere
5.启动 Open*** 服务
systemctl start open***@server
systemctl status open***@server
到这里已经结束了 Open*** Server 端的搭建,接下来需要配置的是 Frp 以及 Open*** Client 端进行连接。
二、安装 Frp
下载地址 https://github.com/fatedier/frp/releases
1.云服务器上部署
tar -zxvf frp_0.37.0_linux_amd64.tar.gz
cd /usr/software/frp_0.37.0_linux_amd64/
vim frps.ini
[common]
bind_port = 7000
token = abc123
dashboard_port = 1402
dashboard_user = admin
dashboard_pwd = admin123
enable_prometheus = true
log_file = /usr/software/frp_0.37.0_linux_amd64/frps.log
log_level = info
log_max_days = 3
:wq
./frps -c ./frps.ini
nohup ./frps -c frps.ini &
cp frps /usr/bin/
mkdir /etc/frp
cp frps.ini /etc/frp/
cp systemd/frps.service /usr/lib/systemd/system/
systemctl enable frps
systemctl start frps
systemctl status frps
2.本地服务器上部署
tar -zxvf frp_0.37.0_linux_amd64.tar.gz
cd /usr/software/frp_0.37.0_linux_amd64/
vim frpc.ini
[common]
server_addr = 公网IP
server_port = 7000
token = abc123
[vpn]
type = tcp
local_ip = 192.168.2.157
local_port = 1194
remote_port = 9411
:wq
./frpc -c ./frpc.ini
nohup ./frpc -c frpc.ini &
cp frpc /usr/bin/
mkdir /etc/frp
cp frpc.ini /etc/frp/
cp systemd/frpc.service /usr/lib/systemd/system/
systemctl enable frpc
systemctl start frpc
systemctl status frpc
三、连接测试
- 依次检查 Open*** Server 端、Frps、Frpc 是否正常启动
- 将上面生成的 Open*** Client 端的证书以及配置文件(client.ovpn),分发到模拟的外网用户中(证书与配置文件需在同一目录下)
- 使用 Open*** Client 进行连接
下载地址 https://openv***.net/community-downloads/
四、问题总结
- Write to TUN/TAP:Unknown error(code=122)
因为在 Open*** Server 配置文件中使用了 comp-lzo 压缩,而 Client 端配置文件中没有 开启。
- WARNING: this configuration may cache passwords in memory – use the auth-nocache option to prevent this
Open*** Client 端配置文件加上 auth-nocache
参考资料 : https://www.xionghaier.cn/archives/367.html
|