fantasy

风色幻想

我与春风皆过客,你携秋水揽星河

fantasy

1953 字

前言

之前做毕业设计时,同学的项目代码放在了学校某服务器上,想让我帮忙将项目代码clone出来,但是该服务器是内网服务器且没有公网IP,无法直接访问。刚好手里有一台具有公网IP的校内服务器的管理权限,便想用这台服务器搭建一个内网VPN,以达到访问内网任意设备或者资源的效果。本文主要使用NPS作为内网穿透解决方案,客户端使用Proxifier作为代理管理工具,从而实现远程内网VPN。所使用主机主要有三个:作为内网跳板的校内服务器T作为NPS管理的公网服务器S作为需要访问内网资源的个人电脑C

NPS

介绍

NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。(官方文档)

服务器S配置

  1. 安装
    在项目的releases页面下载对应的系统版本,这里使用的是linux_amd64_server。下载后便可直接使用,也可使用nps install命令进行安装。
  2. 配置
    安装成功后可在/etc/nps/conf/文件夹下找到nps.conf文件,该文件即为系统配置文件。其中重要配置如下:
appname = nps
#Boot mode(dev|pro)

runmode = dev

#HTTP(S) proxy port, no startup if empty

http_proxy_ip=0.0.0.0
http_proxy_port=10020   # 域名代理http代理监听端口

https_proxy_port=10020  # 域名代理https代理监听端口

https_just_proxy=true
#default https certificate setting

https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key

##bridge

bridge_type=tcp # 客户端与服务端连接方式kcp或tcp

bridge_port=10020   # 监听端口(此处使用端口复用)

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.

public_vkey=123 # 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式


# log level LevelEmergency->0  LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7

log_level=7 # 日志输出级别


#web

web_host=a.o.com
web_username=test   # web管理用户名

web_password=test   # web管理密码

web_port = 10021    # web管理端口

web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.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

#auth_key=test

auth_crypt_key =1234567812345678


#allow_ports=9001-9009,10001,11000-12000


#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=true

#cache

http_cache=false
http_cache_length=100

#get origin ip

http_add_origin_header=false
  1. 启动
    使用nps start命令启动。

  2. 使用Nginx代理

upstream nps {
    server 127.0.0.1:10021;
}

server {
    listen 80;
    server_name  nps.isfantasy.com;

    access_log  /var/log/nginx/nps.access.log  main;
    error_log  /var/log/nginx/nps.error.log;
    #root   html;

    #index  index.html index.htm index.php;


    location / {
        proxy_pass  http://nps;

        #Proxy Settings

        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
   }
}
  1. 创建客户端
    以上配置完成后,便可通过域名 https://nps.isfantasy.com 来访问。在 Client->add 页面添加新客户端,其他随便填,记下验证密钥(此处假设密钥为fantasytest)和client的ID。

  2. 创建SOCK5
    在 SOCK5->add 页面创建新的SOCK5连接,其中Client ID填刚才记下的ID、Server Port填服务器S可用的端口(在使用代理时连接此端口)。
    创建SOCK5

服务器T配置

  1. 安装
    在项目的releases页面下载对应的系统版本,这里使用的是linux_amd64_client,下载后便可直接使用。

  2. 配置 在/etc/nps/文件夹下创建nps.conf文件,其中内容如下:

[common]
server_addr=isfantasy.com:10020 # 服务器S的IP:http_proxy_port

conn_type=tcp
vkey=fantasytest # 上节创建的客户端的验证密钥 

auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
crypt=true
username=testusername    # 账号

password=testpassword    # 密码

compress=true
#pprof_addr=0.0.0.0:9999

disconnect_timeout=60

[socks5]
mode=socks5
server_port=9090    # 本地监听端口

multi_account=multi_account.conf
  1. 运行
    使用命令sudo npc -config /etc/nps/npc.conf运行,若运行成功可在web界面看见对应客户端在线。
    在线客户端

Proxifier(个人电脑C)

介绍

Proxifier是一款功能非常强大的socks5客户端,可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。简而言之,就是能让你很方便的控制哪些应用使用哪些代理,也能让其他电脑应用使用socks5代理。

安装

Windows主要有两个版本,其中安装版需要安装后使用,便携版不需要安装,可直接使用(官方版本只能免费试用一个月,破解版自行寻找):

使用

  1. 设置代理服务器
    在 Profile->Proxy Servers->Add 中添加代理服务器,其中Address为服务器S的IP地址(可用域名表示)、Port为上面创建的SOCK5的端口。填写完后点击check测试代理(要在Test Settings中将Target host设置为www.baidu.com),测试成功会显示Proxy is ready to work with Proxfier! ,则可点击OK确定添加。
  • 添加代理服务器
    添加代理服务器
  • 测试代理
    测试代理
  1. 设置代理规则
    在 Profile->Proxification Rules->Add 中添加代理规则,其中name为规则名、Application为被代理应用、Target hosts为拦截IP(访问这些IP会经过代理)、Target ports为拦截端口、Action为所使用的代理服务器。添加成功并勾选对应规则后点击OK激活使用。
  • 添加代理规则
    添加代理规则
  • 启用代理规则
    启用代理规则

效果

  • 不使用内网VPN
    不使用内网VPN
  • 使用内网VPN
    使用内网VPN

总结

以上配置完成后,打开代理便可访问所有校内资源,相当于本机处于校内环境,访问校内系统、抢课等非常方便!NPS和PROXIFIER的应用远不止如此,其他场景大家自己发掘……

支付宝打赏二维码
微信打赏二维码

最新文章