Skip to content
0

如何玩公网,怎么远程访问(二)

1 序言

1.1 回顾上一篇文章

经过上一篇文章,我们得到了域名以及域名的 token,也确定了我们是否有公网 IP。那么本篇内容就是利用这些东西,怎么在一些解析平台解析域名。但是实际不同场景我会放到第三篇文章介绍。

1.2 举例说明

  • 比如你域名是在阿里云注册的,域名为:ceshi.cn
  • AccessKey ID为:ceshi,AccessKey Secret:ceshi
  • 以及我们的公网IPv4为:116.133.130.136
  • IPv6为:2408:336c:6222:cbb:c5da:d808:f035:9e38
  • 我们注册的域名为:ceshi.cn
  • 那么主域名是:ceshi.cn 或者 @.ceshi.cn
  • 泛域名是:*.ceshi.cn,二级域名就是:erji.ceshi.cn。意思就是主域名前面这个前缀是可以自己自定义的。
  • 以上信息都是我乱写的,为了后面教程,你对应自己获取的就好。

2. 如果使用爱快

2.1 爱快动态域名

爱快动态域名怎么打开?首先打开爱快页面,高级应用动态域名,点击添加就得到如图所示界面。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-01-爱快-01.webp

2.2 爱快动态域名配置

  • 爱快动态域名服务商有好几个,但是常用的只有腾讯云域名:dnspod.cn,阿里云域名:aliyun.com,以及托管到 **Cloudflare.com **的域名。
  • 这次我们就按照阿里云域名注册信息填写配置内容。
  • 首先,我们要去阿里云云解析 DNS,添加以下 DNS 记录,如下图所示。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-01-爱快-02.webp
  • 记录类型 A 代表是公网 IPv4,记录类型 AAAA 代表是公网 IPv6,主机记录这里就是域名,你填写 ***** 就是泛域名,可以是任何值,你填写ik,那么你的二级域名就是:ik.ceshi.cn,记录值就根据你选择是 IPv4 还是 IPv6 填写。
  • 假如我们输入的记录类型 A,公网 IPv4 为:116.133.130.136,二级域名为:ik.ceshi.cn,右下角确定,等上几分钟解析。
  • 其次,我们在爱快动态域名中,输入如图所示的信息,保存等待解析,显示成功说明解析到了。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-01-爱快-05.webp

2.3 爱快端口转发

  • 为什么要端口转发,首先一个是要保护端口,其次就是我们在多层NAT之间访问,最重要的一点就是家庭宽带是没有 http 默认的 80 端口,也没有 https 默认的 443 端口的。所以我们需要转发端口,如图所示打开端口转发页面。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-01-爱快-03.webp
  • 假如爱快的内网 IP 是:192.168.5.1,内网端口默认 80,我们想外网访问的端口是 81,那么可以添加以下信息如图所示。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-01-爱快-04.webp

2.4 爱快远程访问总结

  • 通过爱快域名解析,以及端口转发我们就能够得到了我们想转发的域名和端口,比如 http://ik.ceshi.cn:81,那么访问的就是爱快的页面。

  • 域名解析是设备,端口转发不同的内网 IP 以及内网端口,我们就可以通过相同域名+不同端口访问相应的内网服务。


3 OpenWRT

3.1 OpenWRT域名解析插件

  • OpenWRT 域名解析插件有很多,比如 Alidns 只能解析阿里云的域名,Dnspod 只能解析腾讯云的域名,但是 DDNS-GO 这个插件能解析大多数域名,如图所示。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-02-op-01.webp
  • 填写方式和爱快差不多,唯一优势就是可以一次性解析多个域名,同时解析 IPv4 和 IPv6。
  • 假如我们选择接口获取 IP,公网 IPv4 为:116.133.130.136,主域名为:ceshi.cn,二级域名为:v4.ceshi.cn
  • 以及假如我们选择通过网卡获取,主域名为:ceshi.cn,二级域名为:v6.ceshi.cn,公网IPv6为:2408:336c:6222:cbb:c5da:d808:f035:9e38
  • AccessKey ID为:ceshi,AccessKey Secret:ceshi。那么点保存解析我们就可以看到日志解析情况。

3.2 OpenWRT 端口转发

  • OpenWRT 端口转发的话有自己的防火墙转发,但是不好用,我这里推荐用 Socat 这个瑞士军刀的端口转发,比 Netcat 转发好用。
  • Socat 端口转发工具好处是,可以同时转发同一个设备服务内网的 IPv4 和 IPv6,这样就相当于 IPv6 解析的域名,转发内网 IPv4 可以被外网访问,但是其他的端口转发工具是不能转发 IPv6 的端口的,爱快也不行。
  • 所以我们打开 Socat 端口转发工具,填写如图所示的内容,假如 OpenWRT 的内网 IP 是:192.168.5.2,内网端口默认 80,我们想外网访问的端口是 81/imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-02-op-02.webp

3.4 OpenWRT远程访问总结

  • 通过 OpenWRT 域名解析,以及 Socat 端口转发我们就能够得到了我们想转发的域名和端口,但是我们一次性得到的域名会比爱快得到的多。
  • 比如 http://ceshi.cn:81,是我们 IPv4 或者 IPv6 解析到的。
  • 比如 http://v4.ceshi.cn:81,是我们 IPv4 解析到的。
  • 比如 http://v6.ceshi.cn:81,是我们 IPv6 解析到的。

4. Nginx

  • 什么是反向代理?解析代理分正向代理,反向代理。其他的我们通常用不到,我们只要记住以下格式就行,无论怎么代理,都是通过域名+端口的方式。
  • 域名解析 = 相同域名+不同端口,端口转发,比如 http://ceshi.cn:81 为爱快,http://ceshi.cn:82 为 openwrt。
  • 反向代理 = 不同二级域名+相同端口,DDNS解析域名,比如 http://ik.ceshi.cn:81 为爱快,http://op.ceshi.cn:81 为 openwrt
  • 反向代理最大的好处就是减少端口的暴露,避免被人扫端口,还能 SSL 证书认证,这样你用 https 访问就不会出现不安全的提示,反向代理其实就是一种端口不变的端口转发,实际是需要先去域名解析的。

4.1 DDNS 域名解析

  • Nginx 是一种反向代理,相当于端口转发,实际是需要域名先解析的。
  • 介绍了好几种域名解析的方法,我这里还是以爱快为例子。
  • 因为我喜欢用的是泛域名和主域名,假如我们主域名是:ceshi.cn,泛域名为:*.ceshi.cn
  • 如果你 IPv4 和 IPv6 都有那么,你就要添加两个任务,不同的是 IP 类型选择。爱快如图所示解析。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-03-nginx-01.webp
  • 这样我们就得到了,DDNS 域名解析。

4.2 Nginx 反代

  • 如果,你看过前面文章,有宝塔和 1Panle 的介绍,你安装过这两个建站多功能平台,那么你应该会看到 Nginx 反代。
  • Nginx 其实是有纯代码的配置代理的,但是那个学起来不容易。还得是有图形界面的,宝塔和 1Panle 的 Nginx 是差不多的,那么我只介绍一种就行,我介绍的是宝塔平台,如图所示。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-03-nginx-02.webp

4.3 Nginx反代设置

  • 打开 Nginx 反代,添加站点。
  • 假如我们在阿里云申请的域名为:ceshi.cn,固定外网端口为 88。
  • 我们需要代理的服务为打开爱快的主页,爱快IP是:192.168.5.1,我们可以设置域名为:ik.ceshi.cn,因为我们解析了泛域名,那么我们设置如图所示。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-03-nginx-03.webp

4.4 主路由转发端口

  • 这样我们就代理了 http://ik.ceshi.cn:88 为内网服务为的域名解析。
  • 当然这样单纯的代理是不通的,毕竟我们没主路由转发这个搭建Nginx服务 IP 的端口,因为我们家宽的 80 端口以及 443 端口是不开放的,所以我们需要在设置域名时候直接带端口,因为域名默认是 80 端口。
  • 假设搭建 Nginx 服务的内网 IP 是 192.168.5.5。
  • 假如现在需要端口转发,我们可以去主路由,爱快,OpenWRT,或者其他华为小米路由器都是一样的。
  • 我这里就以爱快主路由演示代理80端口为88端口,如图所示设置,因为是两个端口,所以我们要转发两个任务。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-03-nginx-04.webp

4.5 SSL 证书

  • 这样我们就能通过 http://ik.ceshi.cn:88 访问到爱快的主页,但是会提示不安全,所以我们需要 SSL 证书认证。
  • 我们在宝塔打开 SSL 证书申请如图所示,选择一个网站的域名申请证书即可,成功申请证书后。
  • 我们访问 https://ik.ceshi.cn:88 就不会提示不安全。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-03-nginx-05.webp

4.6 Nginx反代总结

反代比域名解析更加减少端口,也增加了 SSL 证书,就不会提示不安全。


5. Nginx-Proxy-Manager

Nginx-Proxy-Manager 其实就是 Nginx 图形化的版本,不用单独依赖宝塔、1Panle 这样的平台才有图形界面,我们后面就简称 NPM 了,NPM 也需要 DDNS 域名解析的,所以这里不赘述了。

5.1 NPM安装

NPM 我们安装的方法是用 docker-compose 的方法,因为我们家宽的 80 端口以及 443 端口是不开放的,所以我们只需要把80端口变成881端口,443 端口变成 882 就行。 NPM 的 webUI 端口为 881,默认登陆账号为:admin@example.com,密码为:changeme

yaml
# 官方文档
# 官方是不带中文翻译的,有翻译的镜像,使用方法都一样。
# https://github.com/xiaoxinpro/nginx-proxy-manager-zh
# https://hub.docker.com/r/zoeyvid/nginx-proxy-manager
# https://hub.docker.com/r/chishin/nginx-proxy-manager-zh
# 默认账号密码 Email:admin@example.com   Password: changeme

# ---

name: nginx_npm
# 最后编辑时间:2025-02-14
services:
 nginx_npm:
    # 镜像地址,中文版本
    image: chishin/nginx-proxy-manager-zh:latest
    # 容器名字
    container_name: nginx_npm
    # 主机名
    hostname: nginx_npm
    # 配置目录
    environment:
      # 数据库主机名
      DB_MYSQL_HOST: npm_db
      # 连接数据库端口
      DB_MYSQL_PORT: 3306
      # 数据库用户
      DB_MYSQL_USER: npm
      # 数据库密码
      DB_MYSQL_PASSWORD: npm
      # 数据库名称
      DB_MYSQL_NAME: npm
      # 如果您的主机上未启用IPv6,请取消注释
      DISABLE_IPV6: true
    volumes:
      # 配置文件目录
      - /docker/apps/nginx_npm/npm/data:/data
      # let's encrypt SSL证书目录
      - /docker/apps/nginx_npm/npm/letsencrypt:/etc/letsencrypt
    # 连接数据库
    depends_on:
      - npm_db
    ports:
      # WebUI端口
      - 881:81 
      # http 端口
      - 882:80
      # https 端口
      - 883:443
      # FTP端口
      # - 21:21 
    # 重启策略,总是重启
    restart: always
    
 npm_db:
    # 镜像地址
    image: jc21/mariadb-aria:latest
    # 容器名字
    container_name: npm_db 
    # 主机名
    hostname: npm_db
    environment:
      # 数据库root密码
      MYSQL_ROOT_PASSWORD: npm
      # 数据库
      MYSQL_DATABASE: npm
      # 数据库用户
      MYSQL_USER: npm
      # 数据库密码
      MYSQL_PASSWORD: npm
      # 是否自动升级,1 = 是 ,0 = 否
      MARIADB_AUTO_UPGRADE: 1
    volumes:
      # 数据库配置文件目录
      - /docker/apps/nginx_npm/npm_db/mysql:/var/lib/mysql
    # 重启策略,总是重启
    restart: always

创建好 NPM 的服务,浏览器打开 http://192.168.x.x:881,登录账号后修改账号密码。

5.2 SSL 证书设置

NPM 我们首先是生成 SSL 证书,毕竟我们在 Nginx 已经熟悉了 SSL,如下图所示,打开 Let's Encrypt 申请证书。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-04-npm-01.webp 假如域名是:ceshi.cn,泛域名是:*.ceshi.cn,阿里云token为:ceshi和ceshi,那么如图所示就可以申请SSL证书。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-04-npm-02.webp

5.3 NPM 反代设置

打开主机,代理服务,添加代理服务。假如我们需要反代内网IP为 192.168.5.1 的爱快服务,域名我们设置为 ik.ceshi.cn,端口为 80,那么我们如图所示添加。SSL 选择我们域名申请的 SSL 证书,并且打开所有选项。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-04-npm-03.webp/imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-04-npm-04.webp

5.4 主路由端口转发以及域名访问

老样子,假如我们 NPM 服务是搭建在内网 IP 为 192.168.5.5 内,我们需要把内网端口 88(原80端口)转发为外网端口 88,以及内网端口 888(原443端口)转发为外网端口 888。方法就不多介绍了,上面都有。这样我们就成功反代了爱快,而且我们可以用域名 http://ik.ceshi.cn:88来访问。


6. Lucky

Lucky 与 Nginx 反代和 NPM 反代是不一样,他不用依赖别的 DDNS 域名解析,Lucky 集成 DDNS 域名解析,端口转发,反向代理 SSL 证书,是一款很好用的服务,当然我们也需要在主路由上端口转发。假如lucky服务是搭建在内网IP为 192.168.5.5 上,那么我们需要转发内网端口 88 为外网端口 88,具体步骤和上面差不多,就不用重复说了。

6.1 Lucky安装

Lucky 我们安装的方法是用 docker-compose 的方法,Lucky 的 webUI 端口为 16601,默认登陆账号为:666,密码为:666

yaml
# 官方文档
# https://hub.docker.com/r/gdy666/lucky
# https://www.lucky666.cn/docs/install
# https://www.lucky666.cn
#默认端口16601,账号666,密码666

# ---

name: lucky
# 最后编辑时间:2025-02-14
services:
  lucky:
    # 镜像地址
    image: gdy666/lucky
    # 容器名字
    container_name: lucky
    # 主机名
    hostname: lucky
    volumes:
      # 配置文件目录
      - /docker/apps/lucky:/goodluck
    # 直接使用host模式,可在设置内自定义WebUI端口,默认端口16601
    network_mode: host 
    # 重启策略,总是重启
    restart: always

创建好 Lucky 的服务,浏览器打开 http://192.168.x.x:16601,登录账号后修改账号密码,建议加一个访问的口令。

6.2 SSL 证书设置

打开 SSL/TLS 证书,添加证书。假如我们域名是阿里云注册的:ceshi.cn,一样的token,主域名:ceshi.cn,泛域名:*.ceshi.cn。如图所设置,我们就可以申请 SSL 证书,等待几分钟就会成功,失败就多申请几次。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-01.webp

6.3 Lucky 域名解析

这个就是 Lucky 牛的地方了,自带域名解析。打开 lucky,选择动态域名,添加任务。假如你同时有 IPv4 和 IPv6,那么需要分成两个任务来域名解析 IPv4 和 IPv6,这里以 IPv4 为例子。 假如我们域名是阿里云注册的:ceshi.cn,一样的 token,主域名:ceshi.cn,泛域名:*.ceshi.cn。如图所设置,我们就可以域名解析,等待几分钟就会解析成功。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-02.webp

6.4 Lucky 反向代理

打开 lucky,Web 服务,添加 Web 服务规则,假如我们的端口是 88,如图所示设置。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-03.webp 假如我们需要反代内网 IP 为 http://192.168.5.1 的爱快服务,域名我们设置为 ik.ceshi.cn,添加 web 子规则,如图所示设置就行。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-04.webp 这样我们就成功反代了爱快,而且我们只能用域名 https://ik.ceshi.cn:88 来访问。

6.5 http 重定向为 https

比如我们每次都要输入https:// 那么不是很麻烦,所以就需要 http 重定向为 https。同样我们要添加一个新的 web 服务规则,操作模式为订制模式,端口改为 88,在默认规则并且把反向代理改为重定向,默认目标地址为:https://{host}:{port},如图所示设置。 /imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-05.webp/imgURL/blog/20.routers/2002-如何玩转公网,怎么远程访问(二)-05-lucky-06.webp 完成这两步骤以后,我们就可以输入 ik.ceshi.cn:88,来访问爱快主页。


7. 总结

远程访问,不过就是域名解析+端口转发,反代就是加上 SSL 证书,一切前提就是你有公网 IP

最近更新