上期内网服务映射需要一台独立ip得公网服务器搭建frp,本期直接通过在路由器上端口映射来开放内网服务到公网。
本期视频操作需要的条件:
1、以下操作几乎都是基于docker容器,建议安装portainer容器管理工具
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-22-1024x490.png)
2、家庭拨号成功后获得得ip是公网ip,判断方法:
在路由器中查看路由器拨号获取到的ip,对比访问ip138.com显示得ip,如果一致,则说明自己的环境是有独立公网ip得
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-23.png)
获取自己的公网ip https://www.ip138.com
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-24.png)
3、有域名,可以是自己购买的域名,也可以是免费多级域名。
提供免费域名服务的网站,自行申请:
本文以duckdns为例:匿名即可注册,eu这个需要实名,比较麻烦。
并域名解析到自己得独立ip上;
在docker中创建一个容器,进行ddns解析:
docker cli (click here for more info)
docker run -d \
--name=duckdns \
--net=host `#optional` \
-e PUID=1000 `#optional` \
-e PGID=1000 `#optional` \
-e TZ=Etc/UTC `#optional` \
-e SUBDOMAINS=subdomain1,subdomain2 \
-e TOKEN=token \
-e UPDATE_IP=ipv4 `#optional` \
-e LOG_FILE=false `#optional` \
-v /path/to/duckdns/config:/config `#optional` \
--restart unless-stopped \
lscr.io/linuxserver/duckdns:latest
注意:subdomains后面写的是自己申请到的域名,token是域名页面自动生成的。
如果是用其他域名,建议在openwrt中安装ddns插件,或者在容器中自行创建支持自己的域名的ddns容器;
如果是阿里域名,用阿里ddns,使用镜像 chenhw2/aliyun-ddns-cli:latest
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-25.png)
4、内网搭建服务,我需要开放得服务是nextcloud,端口是8150;
这部分自行搭建,nextcloud搭建可以参考我得博文。
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-26-1024x490.png)
5、申请证书,任意linux虚拟机,debian/centos等均可,安装certbot工具,申请证书;
安装certbot
yum install epel-release
yum install certbot
申请证书。
certbot certonly --standalone -d pan.abc.com
6、容器中搭建nginx,将nextcloud服务https://192.168.199.100:8443代理到8444;
nginx的作用是代理,也就是把frp转发后的端口再做一次代理,代理到80/443端口,并且挂上证书。
证书路径:/mnt/user/appdata/nginx/conf/cert
这个证书是从linux中申请的,复制过来。
镜像名称:nginx:latest
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-27-1024x490.png)
修改nginx配置
cd /mnt/user/appdata/nginx
cat conf/conf.d/nextcloud.conf
server {
listen 8180;
server_name dytt.wjzmsj.com;
rewrite ^(.*) https://$server_name:8444$1 permanent;
}
server {
listen 8444 ssl;
server_name dytt.wjzmsj.com;
charset utf-8;
ssl_certificate /etc/nginx/cert/dytt.wjzmsj.com/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/dytt.wjzmsj.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
keepalive_timeout 70;
index index.html index.php;
root /html/dytt.wjzmsj.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { # ¨® V2Ray ???¦Ìpath ¡!ê??
#proxy_redirect on ;
proxy_pass https://192.168.199.100:8443;
proxy_ssl_session_reuse off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
# Show real IP in v2ray access.log
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
7、路由器上通过端口映射开放内网服务8444到公网端口8444;
8、在nextcloud中设置新增的域名支持;
![](https://www.dongvps.com/wp-content/uploads/2024/05/image-28.png)
完成后即可通过访问 https://域名:8444来访问内网服务了。
请教一下,如果我有一个服务器,且服务器和nas都安装了tailscale,我怎么通过流量转发,让手机通过服务器的ip访问nas,感谢了
服务器设置成exit node