# 用frp+OpenConnect Server搭建遠程訪問內網NAS服務
# 前言
frp是常見的內網穿透工具,用來把內網服務端口暴露在公網上,來進行遠程訪問內網,這種方式通常不怎麼安全,很容易被壞人掃描到並進行暴力破解。
俺在疫情期間通過各種折騰遠程訪問家裡NAS實踐,最終發現在內網搭建一套vpn服務,然後把vpn服務端口通過frp暴露到公網上,可以很安全的實現遠程訪問內網NAS服務。
目前該方案穩定運行2年。
# 網絡架構原理
# 安裝環境需求
一台公網linux服務器
內網linux環境,安裝docker
# 配置步驟
# 公網服務器frp服務端配置
進入公網服務器,下載frp
下載地址:https://github.com/fatedier/frp/releases (opens new window)
選擇當前對應的版本,解壓後進入frp目錄,修改frps.ini
為:
[common]
bind_port = 7000
#token,最好為uuid越長越好
token = 1234567890abcdefg!@#$%
啟動frps服務端
nohup ./frps -c ./frps.ini > /tmp/frps.log &
# 配置內網服務器frp客戶端
進入內網服務器,下載frp到內網服務器
解壓後進入frp目錄,修改frpc.ini
為:
[common]
server_addr = <公網服務器ip地址>
server_port = 7000
#跟服務端的token相同
token = 1234567890abcdefg!@#$%
#openconnect服務的udp端口映射
[vpnudp]
type = udp
local_ip = 127.0.0.1
local_port = 4430
remote_port = 4430
#openconnect服務的tcp端口映射
[vpntcp]
type = tcp
local_ip = 127.0.0.1
local_port = 4430
remote_port = 4430
啟動frp客戶端
nohup ./frpc -c ./frpc.ini > /tmp/frpc.log &
如無問題/tmp/frpc.log
會顯示:
login to server sucess
# 配置openconnect server
先安裝docker環境
安裝指南:
https://docs.docker.com/engine/install/
拉取openconnect鏡像
docker run --name ocserv --privileged -p 127.0.0.1:4430:443 -p 127.0.0.1:4430:443/udp -e SRV_CN=example.com -e SRV_ORG="exmple.com" -e SRV_DAYS=3650 -d --restart=always tommylau/ocserv
清除測試賬號:
docker exec -it ocserv sh -c "echo '' > /etc/ocserv/ocpasswd"
設置路由地址為內網網段,這樣可以在撥號成功後,只有該網段的流量會進入VPN,例如你的內網地址是192.168.3.0網段,可設置為:
docker exec -it ocserv sh -c "echo \"route=192.168.3.0/255.255.255.0\" > /etc/ocserv/config-per-group/Route"
進入容器,複製容器內的ocserv.conf配置到宿主機
docker cp ocserv:/etc/ocserv/ocserv.conf ./
編輯ocserv.conf
末尾4行修改為:
default-select-group = Route[vpn]
#select-group = All[全局代理 All Proxy]
auto-select-group = false
config-per-group = /etc/ocserv/config-per-group
保存後,複製到容器中:
docker cp ./ocserv.conf ocserv:/etc/ocserv/ocserv.conf
重啟容器:
docker restart ocserv
添加新用戶username:
docker exec -it ocserv ocpasswd -c /etc/ocserv/ocpasswd -g "Route" username
輸入用戶密碼,完成用戶創建。
# 遠程連接
完成上述工作後,就可以用vpn客戶端進行撥號了,目前openconnect vpn server支持的客戶端有如下:
思科AnyConnect,
OpenConnect GUI,下載地址Welcome to OpenConnect graphical client pages. | OpenConnect GUI (opens new window)
OpenConnect GUI配置說明:
下載後安裝,啟動,點擊New profile:
Name:輸入vpn
Gateway:輸入你公網服務器的ip地址如:https://<ip地址>:4430
Username:輸入你創建的vpn用戶名
完成後點擊save
點擊connect開始撥號
彈出密碼提示,輸入vpn用戶密碼
綠色鎖為連接成功