分类: 教程技术

一点技术储备

  • 【转载】使用nftables配置端口转发

    【转载】使用nftables配置端口转发

    由于Debian 12版本以后已经弃用了iptables,默认使用nftables,在 Linux 中,nftables 是一种用于管理防火墙的现代框架,可以实现灵活且高效的网络包过滤和端口转发。以下是使用 nftables 配置端口转发的基本步骤。

    流量走向:

    客户端 --> GFW --> A服务器 --> B服务器(落地) --> YouTube --> 返回客户端
    A服务器IP:2.2.2.2 端口:2222
    B服务器IP:6.6.6.6 端口:6666

    实现目的:把本机A服务器IP 2.2.2.2 上的 2222 端口流量转发到B服务器IP 6.6.6.6 的 6666 端口上

    A服务器

    以下都在A服务器上操作,也就是转发服务器,白话就是线路好的服务器

    首先在服务器上开启内核转发:

    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    使其生效:
    sysctl -p

    1. 安装 nftables

    确保系统已经安装 nftables。在大多数 Linux 发行版中可以通过以下命令安装(Debian12 已默认自带,不用额外安装):

    apt install nftables  # 对于 Debian/Ubuntu
    yum install nftables # 对于 CentOS/RHEL

    2. 启用并启动 nftables

    确保 nftables 服务已启用并运行:

    systemctl enable nftables
    systemctl start nftables

    3. 创建或编辑配置文件

    编辑 nftables 配置文件,通常位于 /etc/nftables.conf,或者创建一个新的配置文件。

    以下是一个端口转发的配置示例:

    #!/usr/sbin/nft -f

    flush ruleset

    # 创建一个名为 "fowardaws" 的表,用于转发流量
    table ip fowardaws {

    # 在 prerouting 链中配置 DNAT(目的地址转换)
    chain prerouting {
    # 设置该链的类型为 NAT(网络地址转换),并在 prerouting 阶段生效
    type nat hook prerouting priority -100; # priority -100 表示较早匹配规则

    # 将本机也就是中转机2222端口流量转发到落地机IP(6.6.6.6)的6666端口上
    tcp dport 2222 dnat to 6.6.6.6:6666
    udp dport 2222 dnat to 6.6.6.6:6666
    # 上述两行规则会将访问本机 2222 端口的 TCP/UDP 流量重定向到指定的远程服务器端口
    }

    # 在 postrouting 链中配置 SNAT(源地址转换)
    chain postrouting {
    # 设置该链的类型为 NAT,并在 postrouting 阶段生效
    type nat hook postrouting priority 100; # priority 100 表示在路由后生效

    # 使用 masquerade(伪装)机制,将流向(目的机器的ip) 的流量的源地址转换为本机的出站 IP 地址
    ip daddr 6.6.6.6 masquerade
    # masquerade 的效果是隐藏本地 IP,使目标服务器看到的是中转机的外网 IP,而非局域网 IP
    }
    }

    4. 加载配置

    保存文件后,通过以下命令加载配置:

    nft -f /etc/nftables.conf

    5. 验证规则

    使用以下命令查看当前 nftables 规则是否正确加载:

    nft list ruleset
    • prerouting 链:用于修改进入主机的数据包,适合端口转发。
    • postrouting 链:用于修改发出主机的数据包,通常用于地址伪装 (SNAT)。

    B服务器(落地)

    B服务器也就是落地服务器,在B服务器上安装个Shadowsocks就好了,注意端口使用上面转发的6666端口。

    安装SS可使用姥爷的一键脚本:
    https://github.com/yeahwu/v2ray-wss

    客户端

    本来B服务器上安装的SS的IP和端口是,IP 6.6.6.6,端口 6666

    既然使用了转发,那么客户端只要把IP和端口换成A服务器IP,和转发端口2222,就可以使用了。

    参考:

    原文地址:https://hostalk.net/posts/nftables_forward.html

  • 【转载】realm一键转发脚本

    【转载】realm一键转发脚本

    realm一键转发脚本用于转发流量,对于流量无法直接到达目的地的,或者说线路不好的可以试一下,中专的这台机器线路好应该问题不大。

    脚本界面预览:

    欢迎使用realm一键转发脚本
    =================
    1. 部署环境
    2. 添加转发
    3. 添加端口段转发
    4. 删除转发
    5. 启动服务
    6. 停止服务
    7. 重启服务
    8. 检测更新
    9. 一键卸载
    10. 更新脚本
    0. 退出脚本
    =================
    realm 状态:已安装
    realm 转发状态:启用
    realm一键转发脚本
    realm一键转发脚本

    realm转发一键脚本:

    国内或v6 only可用(推荐)

    curl -L https://host.wxgwxha.eu.org/https://github.com/wcwq98/realm/releases/download/V1.3/realm.sh && chmod +x realm.sh && sudo ./realm.sh
    

    curl -L https://github.com/wcwq98/realm/releases/download/V1.3/realm.sh -o realm.sh && chmod +x realm.sh && sudo ./realm.sh
    

    curl -L https://raw.githubusercontent.com/wcwq98/realm/refs/heads/main/realm.sh -o realm.sh && chmod +x realm.sh && sudo ./realm.sh
    

    默认配置文件(脚本在首次部署环境时会自动添加)

    [network]
    no_tcp = false #是否关闭tcp转发
    use_udp = true #是否开启udp转发
    
    #参考模板
    # [[endpoints]]
    # listen = "0.0.0.0:本地端口"
    # remote = "落地鸡ip:目标端口"
    
    [[endpoints]]
    listen = "0.0.0.0:1234"
    remote = "0.0.0.0:5678"
    

    如需其他更多配置请参考官方文档:https://github.com/zhboner/realm

    原文链接:https://www.nodeseek.com/post-202385-1

  • 隧道中转方法

    隧道中转方法

    在nodeseek看到的这个隧道中转方法,感觉还可以,自用按流量计费,ssh测速延迟很低,目前运行一切正常,记录一下。

    下载教程开始:

    GOST官方文档https://gost.run 二进制文件:https://github.com/go-gost/gost/releases

    1. 点二进制文件找到Assets找出自己的服务器架构,一般来说都是x86和amd就是这个:https://github.com/go-gost/gost/releases/download/v3.0.0-nightly.20241122/gost_3.0.0-nightly.20241122_linux_amd64.tar.gz
    2. 下载二进制文件(中转和落地都要下载)
     sudo wget https://github.com/go-gost/gost/releases/download/v3.0.0/gost_3.0.0_linux_amd64.tar.gz

    如果错误输入 apt install wget -y 试试

    1. 解压给执行权限
    sudo tar -xf gost_3.0.0_linux_amd64.tar.gz 
    sudo chmod +x gost

    隧道中转教程

    假如我是搭建了个ss节点中转鸡IP:1.1.1.1落地鸡:2.2.2.2
    端口:中转鸡开放了:8080 落地开放了:4444,ss搭建的端口上555555

    • 中转机:
    ./gost -L tcp://0.0.0.0:8080 -L udp://0.0.0.0:8080 -F relay+tls://[2.2.2.2]:4444
    • 落地机:
    ./gost -L relay+tls://:4444/127.0.0.1:555555

    最后把原来的2.2.2.2 IP换成1.1.1.1,把5555端口改成8080

    最后,请不要把该教程的内容使用在非法用途上,否则后果自负,本文仅仅是技术研究讨论,我仅仅是加速ssh,提高链接速度,切勿对号入座。

    参考链接

  • peertube的对象存储设置方法

    peertube的对象存储设置方法

    peertube在两个月前就安装好了,传过几个视频,发现很快服务器的存储空间就没了,没办法,必须得用对象存储,上传的只是一个视频文件,然后peertube会对视频进行切片处理,这样不通分辨率的视频导致文件会很大,所以必须使用对象存储。

    我刚开始使用对象存储的方法是官方文档里的,按照要求设置发现不行,可能是安装方式不一样,这个方法无效。看log发现不对,然后就搁置了好久。

    就开始搜索docker的配置方法,找到一篇文章,发现也是docker安装的,这下对味儿了,最后文章结论是他成功了。

    peertube的对象存储支持aws的s3和BackBlaze的b2(aws的s3太贵了,建议使用b2)

    peertube的对象存储设置方法
    peertube的对象存储

    peertube配置-对象存储

    下面是我的配置

    PEERTUBE_OBJECT_STORAGE_ENABLED=true
    PEERTUBE_OBJECT_STORAGE_ENDPOINT=s3.us-west-004.backblazeb2.com
    PEERTUBE_OBJECT_STORAGE_REGION=us-west
    PEERTUBE_OBJECT_STORAGE_PROXY_PROXIFY_PRIVATE_FILES=true
    PEERTUBE_OBJECT_STORAGE_CREDENTIALS_ACCESS_KEY_ID=b2的id
    PEERTUBE_OBJECT_STORAGE_CREDENTIALS_SECRET_ACCESS_KEY=b2的密钥
    PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BUCKET_NAME=桶名
    PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_PREFIX=streaming-playlists/
    PEERTUBE_OBJECT_STORAGE_STREAMING_PLAYLISTS_BASE_URL=https://桶名.s3.us-west-004.backblazeb2.com
    PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL=public
    PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BUCKET_NAME=桶名
    PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_PREFIX=web-videos/
    PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_BASE_URL=https://桶名.s3.us-west-004.backblazeb2.com

    把这个文件内容加入到.env 文件内容底部,重启peertube容器就好了。

    转移本地文件到对象存储,这个可以按照官方的教程走,转移后会删除服务器本地的文件,但是我发现有些视频还是没删除,暂时未知。但是视频的请求都是来自远程的b2链接。

    转移文件到对象存储

    安装 PeerTube CLI

    安装node

    检查 node
    node --version # Should be >= 16.x

    检查安装

    有就不需要安装,没有的话执行下方的安装

    sudo npm install -g @peertube/peertube-cli

    绑定到 peertube 上

    peertube-cli auth add -u 'PEERTUBE_URL' -U 'PEERTUBE_USER' --password 'PEERTUBE_PASSWORD'

    不详细介绍了,域名,账户,密码 然后就算绑定了。

    转移文件

    cd /var/www/peertube-docker
    docker compose exec -u peertube peertube npm run create-move-video-storage-job -- --to-object-storage -v [videoUUID]

    进入目录这里就是你当时使用docker安装peertube的目录

    最后

    文件执行时长取决于你本地视频的多少和你服务器和对象存储之间的连接带宽大小,总之需要一会儿。

    参考连接

  • rssbot安装教程

    rssbot安装教程

    rssbot用来在telegram订阅一些自己喜欢的频道或者博客,这样就不会错过一些有趣的内容,喜欢的话直接点击查看,很方便,下面介绍一下安装方法,我的安装环境是Debian 11.

    (更多…)
  • MC迁移和常用命令记录

    MC迁移和常用命令记录

    MC命令是minio对象存储的管理命令,也可以用于aws的s3对象存储,特此记录。主要介绍文件的迁移,拷贝,删除等常规操作。

    (更多…)
  • minio配置nginx反代

    minio配置nginx反代

    minio默认没有域名,需要配置域名才能好分享文件,还有证书什么的,下面是具体配置教程。

    (更多…)
  • 【转载】Docker 配置 Mastodon Sidekiq 多线程

    【转载】Docker 配置 Mastodon Sidekiq 多线程

    今早在群里收到报错,nofan 的 timeline 延迟近半小时不动,跑 Sidekiq 看了一下,队列里超过 4000 条待处理任务,简单看了一下日志,大部分是 bgme.me 的未响应报错。当笔记本自己记录。

    (更多…)
  • minio对象存储迁移方法

    minio对象存储迁移方法

    迁移工具我使用的是rclone,此工具功能强大,支持海量数据迁移,支持主流的平台,作为一家海外开源工具,甚至支持中国移动的对象存储迁移,离谱。下面留档备份一下此工具的具体用法。

    (更多…)
  • DBSyncer安装教程

    DBSyncer安装教程

    DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。

    (更多…)