Unraid/NAS网络篇(docker-compose 部署配置)

2024-06-06 23:01:13 6点赞 31收藏 2评论

外网访问(内网穿透)

  1. CloudFlare 需要一个自备一个域名 (推荐)

  2. frp 一台云主机(公网 IP)可能也需要一个域名

  3. zerotie 仅需要注册账号,实际体验网速太慢,不推荐

  4. DDNS + IPv6 (未部署测试,CloudFlare 已经够用)

CloudFlare Tunnel

参考列表

CloudFlare Tunnel 免费内网穿透的简明教程 - 少数派

frp

frps 服务端部署 (公网 IP 所在机器)

1. 创建配置文件 (最简单的模式)

$ sudo vim /etc/systemd/frp/frps.toml

# server bindPort = 7000 vhostHTTPPort = 28080

2. 创建systemd配置文件

$ sudo vim /etc/systemd/system/frps.service

#systemd [Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /etc/systemd/frp/frps -c /etc/systemd/frp/frps.toml [Install] WantedBy = multi-user.target

3. 启动

# 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps

参考文档

使用 systemd

此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。

https://gofrp.org/zh-cn/docs/setup/systemd/

frpc (自己的 unraid /NAS 上)

1. 创建配置文件

$ vim frpc.toml

# client serverAddr = "60.20.17.17" serverPort = 7000 [[proxies]] name = "web" type = "http" localPort = 80 customDomains = ["60.20.17.17"]

2. 同目录下创建 Dockerfile(unraid 命令行启动之后一段时间程序就不见了,猜测可能是需要 docker 容器启动才行,所以需要打个 docker 镜像)

FROM alpine:3.8 LABEL maintainer="xxxxixxixi" ENV TZ=Asia/Shanghai WORKDIR / RUN apk add --no-cache tzdata && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone COPY frpc / COPY frpc.toml /frp/ CMD /frpc -c /frp/frpc.toml

3. 构建镜像

docker build -t myfrpc:1.0.0 .

4. 编写 compose文件

docker-compose.yaml

version: '3.3' services: frpc: restart: always network_mode: host container_name: frpc image: myfrpc:1.0.0

5. 启动

参考列表

Dockerfile详解(超详细) - 以九为书 - 简书

Dockerfile详解 通过docker build -t repository:tag ./ 即可构建,要求:./下存在Dockerfile文件 之前我们聊的镜像分层…

https://www.jianshu.com/p/4508784f6ddc

魔法

clash (推荐)

services: clash: # 看自己使用的 clash 的内核 哪种 image: metacubex/clash-meta:latest #image: dreamacro/clash:latest container_name: clash-meta restart: always network_mode: host privileged: true logging: driver: "json-file" options: max-size: "10m" volumes: # 将自己使用的 config.yaml 复制到部署的 ./config/config.yaml - ./config/config.yaml:/root/.config/clash/config.yaml

V2rayA

version: '3.3' services: v2raya: container_name: v2raya image: mzz2017/v2raya:latest restart: always network_mode: host privileged: true logging: driver: "json-file" options: max-size: "10m" environment: - V2RAYA_LOG_FILE=/tmp/v2raya.log - V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray - V2RAYA_NFTABLES_SUPPORT=off - IPTABLES_MODE=legacy volumes: - /lib/modules:/lib/modules:ro - /etc/resolv.conf:/etc/resolv.conf - /etc/v2raya:/etc/v2raya

参考列表

开发人员手册 · Project V 官方网站

Project V 由以下几部分组成:

https://www.v2ray.com/developer/

v2rayA/README_zh.md at main · v2rayA/v2rayA

A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols. 🚀 - v2rayA/v2rayA

https://github.com/v2rayA/v2rayA/blob/main/README_zh.md

Docker

安装内核和 v2rayA

https://v2raya.org/docs/prologue/installation/docker/

docker 网络

1. 开启 IPv6 支持

2. 创建名为inner_net 的 docker 网络(之后可以将应用指定 docker 网络为 inner_net

docker network create --ipv6 --subnet=172.29.0.0/16 --subnet=2001:db8:2::/64 --gateway=172.29.0.1 --gateway=2001:db8:2::1 inner_net

参考列表

Enable IPv6 support

How to enable IPv6 support in the Docker daemon

https://docs.docker.com/config/daemon/ipv6/

防火墙

本人不是专家,仅做了简单处理。 策略如下:

  1. 允许所有的内网连接

  2. 允许(外网)的RELATED, ESTABLISHED 连接(可以给外网返回数据,不允许外网主动请求进来)(CloudFlare是通过部署的docker容器实例将流量转发,所以通过 cloudflare 进来的请求没有问题)

  3. 禁止所有的其他连接

# zerotier iptables -t nat -A PREROUTING -s 10.241.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:80 iptables -A INPUT -s 10.241.0.0/16 -p tcp --dport 80 -j ACCEPT # allow all docker & lan iptables -I INPUT -s 172.29.0.0/16 -j ACCEPT iptables -I INPUT -s 192.168.1.0/24 -j ACCEPT # reject all input except RELATED,ESTABLISHED packages iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j DROP # 允许所有的本地连接 docker & lan ip6tables -A INPUT -s fe80::/64 -j ACCEPT ip6tables -A INPUT -s 2001:db8:2::/64 -j ACCEPT # reject all input except RELATED,ESTABLISHED packages ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ip6tables -A INPUT -j DROP iptables -nvL INPUT iptables -nvL INPUT --line

Unraid/NAS网络篇(docker-compose 部署配置)


展开 收起
2评论

  • 精彩
  • 最新
  • 第一个速度怎么样?看电影卡不卡

    校验提示文案

    提交
    如果是 xiaoya 看不卡,它实际走的网盘。 jellyfin 试过几次,不稳定,有时候不行

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

值友3654396916

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
31
扫一下,分享更方便,购买更轻松