frp和nps是两个轻量级内网穿透代理服务器,这两种都是带有web管理,各有特点。
frp常用于路由器插件,web管理比较简陋,主要通过文件配置进行映射。
nps我比较喜欢,web管理很丰富,既可以通过web也可以通过配置文件进行映射。
流程:
- 一,下载nps
- 二,修改nps_server配置
- 三,安装nps_server
- 四,创建系统服务文件(方便systemctl管理)
- 五,防火墙放行端口
- 六,测试
一,下载nps
nps项目源作者项目地址:https://github.com/ehang-io/nps/releases/
根据自己平台下载对于版本server、client客户端
二,修改nps_server配置
解压server包,可以看到nps(二进制程序)、conf(配置目录)、web(web页目录)
不对配置修改也可以直接使用,但不安全且配置不一定适合自己,这里nps_config的配置,我更改的内容都是我#号注释的地方。(配置详解可查下作者文档https://ehang-io.github.io/nps/#/?id=nps)
vi ./conf/nps.conf
appname = nps
Boot mode(dev|pro)
runmode = dev
HTTP(S) proxy port, no startup if empty
#代理服务IP或域名地址
http_proxy_ip=ffing.fun
#http代理端口
http_proxy_port=11080
#https代理端口
https_proxy_port=11443
#启用htts代理
https_just_proxy=true
default https certificate setting
#https代理证书(更改为自己的证书路径)
https_default_cert_file=/opt/crt/ffing.fun.pem
#https代理秘钥(更改为自己的密钥路径)
https_default_key_file=/opt/crt/ffing.fun.key
#####服务器与客户端之间
bridge
#客户端与服务端连接方式kcp或tcp
bridge_type=tcp
#服务端客户端通信端口
bridge_port=8024
bridge_ip=0.0.0.0
Public password, which clients can use to connect to the
server
After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
#公共key!妥善更改密码,否则客户端可以通过此秘钥直接连接服务器!
public_vkey=123
Traffic data persistence interval(minute)
Ignorance means no persistence
flow_store_interval=1
log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
log_path=nps.log
Whether to restrict IP access, true or false or ignore
ip_limit=true
#####p2p相关配置
p2p
p2p_ip=127.0.0.1
p2p_port=6000
#####web相关配置
web
#web管理地址
web_host= ffing.fun
#web管理用户名
web_username=admin
#web管理密码
web_password=admin
#web端口
web_port = 98
web_ip=0.0.0.0
web_base_url=
#web页面是否启动ssl
web_open_ssl=true
#web-ssl证书
web_cert_file=/opt/crt/ffing.fun.pem
#web-ssl秘钥
web_key_file=/opt/crt/ffing.fun.key
if web under proxy use sub path. like http://host/nps need this.
web_base_url=/nps
Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
Remove comments if needed
#web api秘钥
auth_key=test
#获取服务端authKey时的aes加密密钥,16位
auth_crypt_key =1234567812345678
#默认允许连接的端口范围
allow_ports=9001-9999
Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
cache
http_cache=false
http_cache_length=100
get origin ip
http_add_origin_header=false
pprof debug options
pprof_ip=0.0.0.0
pprof_port=9999
client disconnect timeout
默认 disconnect_timeout=60
三,安装nps_server
可根据自己的需求选择安装方式:
1.绿色文件形式运行
nps本身就是二进制文件,可以在目录直接运行,默认调用当前目录的conf/nps.config配置文件;
2.命令安装
nps install
安装后的二进制文件会放在/usr/bin下,配置文件会放在/etc/nps目录下
nps控制命令:nps start|stop|restart|install|uninstall|update
四,创建系统服务文件(方便systemctl管理)
创建nps.service文件,方便后期管理
vi /usr/lib/systemd/system/nps.service
[Unit]
Description=nps server
After=network.target
[Service]
User=root
Group=root
ExecStart=/NPS目录/nps
Restart=always
RestartSec=30s
[Install]
WantedBy=multi-user.target
重新加载systemctl
systemctl daemon-reload
systemctl控制命令
systemctl start|stop|restart|enabel|disable nps
五,防火墙放行端口
根据nps_server中的配置,放行所需端口
web端口:98
服务桥接端口:8024
http代理端口:11080
https代理端口:11443
默认放行端口:9001-9999
firewall-cmd --add-port=你需要放行的端口号/tcp --zone=public --permanent
firewall-cmd --reload
六,测试
web后台:http://你的服务IP:98
用户名:admin
密码:admin
npc.exe -server=1.1.1.1:8284 -vkey=客户端的密钥(公共vkey或客户机vkey)
注:公共vkey泄露,任何客户机都可以连接!!!建议
为了方便web管理,又无需客户机人员专业操作(修改conf文件),我想了个方法,就是做个bat,将客户机计算机名作为vkey,这样客户机人员只需要提供计算机名即可。
a.创建一个客户端,将客户机的计算机名作为vkey(验证密钥)
客户机上运行bat内容,自动调用客户机的计算机名称作为vkey,运行bat即可
for /f %%a in ('hostname') do set my_host_name=%%a npc.exe -server=你服务器地址:端口 -vkey=%my_host_name%
连接成功后,就可以通过web后台去添加TCP代理端口、http代理等。
发表评论