通过阿里云服务器使用NPS实现外网访问本机服务

要将本机服务通过阿里云服务器使用NPS实现外网访问,请按以下步骤操作:

一、服务端设置(阿里云服务器)

  1. 安装NPS服务端

    # 下载并解压Linux版NPS(64位)
    wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
    tar -zxvf linux_amd64_server.tar.gz
    cd nps
    
  2. 修改配置文件
    编辑 conf/nps.conf

    bridge_port=8024            # 客户端与服务端的通信端口(需开放安全组)
    http_proxy_port=80          # 外部HTTP访问端口
    https_proxy_port=443        # HTTPS端口
    web_username=admin          # 管理界面账号
    web_password=your_password  # 强密码
    web_port=8080               # 管理界面端口
    
  3. 启动服务端

    sudo ./nps install  # 安装服务
    sudo nps start      # 启动服务
    
  4. 配置阿里云安全组

    • 开放TCP端口:8024(桥接端口)、80/443(代理端口)、8080(管理端口)
    • 入口:0.0.0.0/0

二、管理界面配置(浏览器访问)

  1. 访问 http://<阿里云公网IP>:8080,用配置文件中的账号密码登录

  2. 创建客户端

    • 进入「客户端」→「新增」
    • 备注填写本地PC → 生成唯一密钥(或手动设置)→ 保存
  3. 添加端口映射

    • 进入刚创建的客户端 →「隧道」→「新增」
    • 配置项:
      隧道类型:TCP
      服务端端口:1122          # 阿里云服务器上的监听端口(自定义)
      目标(IP:Port):<本机内网IP>:<本机服务端口>  # 如 192.168.1.100:8080
      

三、客户端设置(本机)

  1. 下载NPC客户端
    https://github.com/ehang-io/nps/releases下载对应版本:

    • Windows:windows_amd64_client.tar.gz
    • macOS:darwin_amd64_client.tar.gz
  2. 启动客户端连接

    # Windows(cmd管理员权限)
    npc.exe -server=<阿里云公网IP>:8024 -vkey=<客户端密钥>
    
    # Linux/macOS
    chmod +x npc
    ./npc -server=<阿里云公网IP>:8024 -vkey=<客户端密钥>
    

四、验证访问

  1. 在NPS管理界面检查客户端状态显示在线
  2. 外网通过访问阿里云服务器的公网IP和映射端口访问服务:
    curl http://<阿里云公网IP>:1122  # 或浏览器访问
    

防火墙检查(本机)

  • Windows:控制面板 → 防火墙 → 允许应用通过防火墙(放行本机服务端口)
  • Linux
    sudo ufw allow <本机服务端口>/tcp
    

故障排查

问题现象解决方案
客户端无法连接服务端检查阿里云安全组是否开放8024端口
外网无法访问映射端口确认隧道配置的服务端端口是否开放
管理界面无法访问检查web_port端口和防火墙
客户端频繁掉线检查本机网络稳定性,重连客户端

提示:建议为NPS服务端配置域名并开启HTTPS(通过配置文件修改web_base_urlweb_open_ssl),长期运行建议将npc注册为系统服务(Windows用nssm,Linux用systemd)。

要在内网架设socket服务端,并使用nps服务器将socket映射到外网,可按以下操作进行: #### 在内网架设socket服务端 以下是一个简单的Python示例代码,用于创建一个基本的TCP socket服务端: ```python import socket # 创建一个TCP/IP套接字 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址端口 server_address = ('0.0.0.0', 8888) server_socket.bind(server_address) # 监听连接 server_socket.listen(1) print('等待客户端连接...') while True: # 接受客户端连接 client_socket, client_address = server_socket.accept() try: print(f'连接来自: {client_address}') # 接收数据 data = client_socket.recv(1024) print(f'接收到数据: {data.decode()}') # 发送响应 message = 'Hello, client!' client_socket.sendall(message.encode()) finally: # 关闭连接 client_socket.close() ``` 上述代码创建了一个简单的TCP socket服务端,监听在本地的8888端口,等待客户端连接,并接收发送数据。 #### 使用nps服务器将socket映射到外网 - **安装配置nps服务器**:在具有公网IP的服务器上安装nps服务端,按照nps官方文档进行配置,主要配置包含用户、端口、隧道等信息。 - **安装配置npc客户端**:在内网机器上安装nps客户端npc,编辑配置文件`config.ini`,配置好nps服务器的地址、端口、密钥等信息,并添加一条tcp隧道映射规则。示例配置如下: ```ini [common] server_addr=公网服务器IP:8024 conn_type=tcp vkey=你的密钥 [tcp] mode=tcp local_ip=127.0.0.1 local_port=8888 remote_port=9999 ``` 以上配置表示将内网机器的8888端口映射到公网服务器的9999端口。 - **启动nps服务npc客户端**:在公网服务器上启动nps服务端,在内网机器上启动npc客户端。通过以上步骤,外网用户就可以通过访问公网服务器的IP映射的端口(如 公网IP:9999)来访问内网的socket服务端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值