分类目录归档:Uncategorized

OpenWRT 防火墙开启IPv6 端口转发的方法

前言

OpenWRT当启用IPv6时,默认情况下流量会经过主路由防火墙。在外部网络环境中,若想访问家庭局域网内的服务(如SSH、Proxy、NAS等),默认请求将被防火墙拦截,因此需在主路由防火墙中添加允许规则。
这里并不推荐禁用IPv6防火墙:虽然IPv6地址和端口扫描难度较大,但仍存在被扫描风险。所有局域网服务可能暴露于外网,即使未受攻击,家庭宽带提供公网服务也可能被ISP警告。

LUCI网页界面配置

打开OpenWRT路由管理页面,进入 网络 - 防火墙 - 流量规则。

点击 添加 创建新规则。流量规则区的规则优先级高于默认规则,无需担心与默认规则冲突,但需注意同页其他规则的优先级。可通过拖拽调整规则顺序。

规则配置示例:

  • 名称:清晰标识规则用途(例如如 NAS IPv6)。
  • 协议:按需选择协议,不确定时可同时选TCP和UDP。
  • 源区域:选择 WAN(外网流量入口)。
  • 源地址/源端口:留空。
  • 目标区域:选择 LAN(内网目标区域)。
  • 目标地址: 链路本地IPv6地址(通常以 fe80:: 开头)。

移除链路本地前缀(如 fe80::20c:29ff:fed7:fbf 改为 ::20c:29ff:fed7:fbf)。

追加掩码 /::ffff:ffff:ffff:ffff,最终填入 ::20c:29ff:fed7:fbf/::ffff:ffff:ffff:ffff。此配置确保客户端即使因ISP分配的前缀变化仍能被匹配。

目标端口:指定允许的端口(如 80-443)。留空将放行所有端口,存在重大安全风险,不建议。

动作:选择 接受(Accept)。

高级设置:地址族改为 IPv6,其他保持默认。

保存后,可测试外网访问内网服务。若在 状态 - 防火墙 的 forward_wan 链中看到规则及计数器,则规则已生效。

凑了台DL20Gen9

最近攒了台DL20Gen9垃圾服务器,准备做成All-in-one(路由、NAS、监控)。
为了节省磁盘的电,就买了2块硬盘的版本。

DL20gen9

配置清单:

  • 某宝淘的准系统 (¥700)
  • Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz (¥113)
  • 4 x 16GB 2133 ECC Unbuffered 三星内存 (¥600)
  • 2 x 12 TB 氦气盘 (¥1180)
  • 256G 长城nvme (¥113)
  • HP Ethernet 10Gb 2-port 560SFP+ Adapter (¥99)

总记:¥2777

  • DL20gen9 支持最大64G 2133/2400 ECC内存(Unbuffered,某宝上一般叫纯ECC,别买错了)。
  • 想用最大的内存,2133只能配v5的CPU,2400只能配v6,如果混着了,就只能识别一半出来。
  • 如果你买到了坏的CPU,可能会出现DIMM cann't train的错误提示(我就因此换了所有硬件,最后只能是归到CPU上了)
  • 各种固件需要自己更新,要不然一些v5的CPU是无法识别的。

方便链接

iLo4 更新,主要是为了HTML5 的remote console
https://pingtool.org/latest-hp-ilo-firmwares/

System ROM(BIOS)
https://www.chiphell.com/forum.php?mod=viewthread&tid=2643119&extra=page%3D1&ordertype=2&mobile=no

HP这iLo还要许可证,坑爹到家了,贴一个在这了。
iLO 4 高级许可证密钥:
35DPH-SVSXJ-HGBJN-C7N5R-2SS4W
35SCR-RYLML-CBK7N-TD3B9-GGBW2

FreeBSD ports初体验

在开源操作系统的世界里,FreeBSD凭借其稳定性和强大的功能,赢得了不少技术爱好者的青睐。
而FreeBSD中的Ports系统,更是为这款操作系统增添了不少色彩。今天我就分享下我的初次ports体验。

Ports的背景和优势

Ports是FreeBSD中的一个软件包管理系统,它类似于其他操作系统中的包管理器(如Linux中的apt、yum等)。apt,yum更类似FreeBSD中的pkg程序,分发的是二进制包,而Ports系统是为用户提供了一个集中的地方来存储、分发和更新各种开源软件源码编译方式

Ports系统具有以下几个显著优势:

  • 统一管理:Ports提供了一个集中的地方来管理所有的软件包,软件的安装和维护更加方便。
  • 易于更新:Ports会自动处理依赖关系,确保软件包之间的兼容性,提供自动或手动更新选项。
  • 可定制性:用户可以根据自己的需求对软件包进行定制,例如添加额外的功能或修改配置,针对宿主机的CPU类型和使用方法优化。

构建使用的命令行

下面来实战一下,使用Ports系统构建和安装软件包主要依赖于命令行工具。以下是一些常用的命令及其功能,Ports有意思的点就是,全部功能都是用Makefile实现的:

  1. 如果你安装的时候就选择了Ports,就跳过第1步,如果没有就更新Ports
    cd /usr/ports && make fetchindex
  2. 克隆Ports Tree:
    git clone --depth=1 --branch <你的版本号> https://github.com/freebsd/freebsd-ports /usr/ports
  3. 安装软件,例如vim
    cd /usr/ports/editor/vim && make BATCH=yes install clean
  4. 如果需要搜索可用的软件包,可以用search
    make search key=^vim- | grep -E "Port:|Path:|Info:|^$"
  5. 卸载软件包的话,例如,要卸载vim,可以执行以下命令
    cd /usr/ports/editor/vim
    make deinstall
  6. 使用make clean命令可以清理编译过程中产生的临时文件。
  7. 使用make distclean命令可以清理软件包及其临时文件

参考文章:

multi-instance udp2raw configuration for openwrt

/etc/config/udp2raw

config udp2raw foo
        option enable '1'
        option run_command '-c -l 127.0.0.1:55820 -r foo_ip:80 -k <bar_password> --raw-mode faketcp -a'

config udp2raw bar
        option enable '1'
        option run_command '-c -l 127.0.0.1:55821 -r bar_ip:80 -k <bar_password> --raw-mode faketcp -a'

/etc/init.d/udp2raw

#!/bin/sh /etc/rc.common

USE_PROCD=1

START=99
STOP=01

PROG=/usr/bin/udp2raw

_log() {
        logger -p daemon.info -t udp2raw "$@"
}

_err() {
        logger -p daemon.err -t udp2raw "$@"
}

start_service() {
    config_load "udp2raw"
    config_foreach start_instance udp2raw
}

start_instance() {
    config_get run_command "$1" 'run_command'
    _log "start instance $1 with $run_command"
    procd_open_instance "udp2raw_$1"
    procd_set_param command $PROG
    procd_append_param command $run_command
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}

reload_service() {
    stop
    start
}

service_triggers() {
    procd_add_reload_trigger udp2raw
}

Now, service udp2raw start