<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/rss/stylesheet/" type="text/xsl"?>
<rss xmlns:content='http://purl.org/rss/1.0/modules/content/' xmlns:taxo='http://purl.org/rss/1.0/modules/taxonomy/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:itunes='http://www.itunes.com/dtds/podcast-1.0.dtd' xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0" xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:podbridge='http://www.podbridge.com/podbridge-ad.dtd' version='2.0'>
<channel>
  <title>Snicoe&apos;s Blog</title>
  <language>zh-cn</language>
  <generator>microfeed.org</generator>
  <itunes:type>serial</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <atom:link rel="self" href="https://blog-arklink-org.pages.dev/rss/" type="application/rss+xml"/>
  <link>https://blog.arklink.org</link>
  <link rel="next" href="https://blog-arklink-org.pages.dev/rss/?next_cursor=1725873825980&amp;sort=newest_first" type="application/rss+xml"/>
  <description>
    <![CDATA[<p>这里是Snicoe自言自语的地方，随便写点东西，也没啥人看，所以看心情更新一些陈芝麻烂谷子的东西。</p><p>我可能不会经常维护此站点，也许可能永久不更新消失在汪洋互联网之中，会回来吗？也许吧，Good Luck！</p><p>社媒: <a href="https://www.instagram.com/snicoe0716" rel="noopener noreferrer" target="_blank">Instagram</a> | <a href="https://www.youtube.com/@snicoeofficial" rel="noopener noreferrer" target="_blank">Youtube</a> | <a href="https://x.com/snicoeofficial" rel="noopener noreferrer" target="_blank">X / Twitter</a></p><p>如果你使用了我的部分服务可以前往<a href="https://status0.arklink.org" rel="noopener noreferrer" target="_blank">Status</a>页面查看可用状态，全部服务均优先运行在IPv6网络。</p><p>本人生理男性并自认为男性，性取向正常，社恐一个，看心情回复❤️。</p>]]>
  </description>
  <itunes:author>Snicoeの自言自语</itunes:author>
  <itunes:image href="https://media-cdn.arklink.org/blog-arklink-org/production/images/channel-35018318ef9161a58e1728b4144ab0a9.png"/>
  <image>
    <title>Snicoe&apos;s Blog</title>
    <url>https://media-cdn.arklink.org/blog-arklink-org/production/images/channel-35018318ef9161a58e1728b4144ab0a9.png</url>
    <link>https://blog.arklink.org</link>
  </image>
  <copyright>©2019-2026</copyright>
  <itunes:category text="Science"/>
  <item>
    <title>OpenWrt 25.14添加Qlogic QL41系列网卡驱动</title>
    <guid>D3JIwirfOZe</guid>
    <pubDate>Wed, 08 Jul 2026 14:31:14 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>这沟槽的网卡也是很逆天了，目前不在openwrt中主线提供qede只有第三方编译的版本才提供，所以原生op无法驱动，使用源码编译会失去原生的包管理器，因为签名对不上。</p><p>原生openwrt sdk交叉编译环境中内核也是被裁减过的，不包含关键的qed和qede驱动，需要从相同Kernel主线中拉Qlogic驱动，然后编译出apk装进去</p><p>一、下载Linux源码，25.14是6.12.78 内核，所以对应主线6.12，解压找到drivers/net/ethernet/qlogic，把底下的所有文件复制出来备用。</p><pre class="ql-syntax" spellcheck="false">wget https://github.com/torvalds/linux/archive/refs/tags/v6.12.zip
</pre><p>二、下载openwrt交叉编译环境，选择相同的环境sdk，下载解压它，系统需要ubuntu 24.04 lts，当然debian系都差不多，所以没区别，环境可以看官方文档</p><pre class="ql-syntax" spellcheck="false">wget https://archive.openwrt.org/releases/25.12.4/targets/x86/64/openwrt-sdk-25.12.4-x86-64_gcc-14.3.0_musl.Linux-x86_64.tar.zst
</pre><p>三、创建驱动源码目录</p><pre class="ql-syntax" spellcheck="false">mkdir -p package/kmod-qed/
mkdir -p package/kmod-qede/
mkdir -p qlogic-drivers/qlogic #把从内核主线里面的驱动全部解压到这个目录
</pre><p>四、编写两个模块的Makefile</p><pre class="ql-syntax" spellcheck="false"># vim package/kmod-qed/Makefile 写入
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=kmod-qed
PKG_VERSION:=6.12.87
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define KernelPackage/qed
&nbsp;SUBMENU:=Network Devices
&nbsp;TITLE:=QLogic QED 25/40/100Gb core driver
&nbsp;DEPENDS:=@PCI_SUPPORT +kmod-lib-zlib-inflate +kmod-lib-crc8&nbsp;
&nbsp;FILES:=$(PKG_BUILD_DIR)/qed.ko
&nbsp;AUTOLOAD:=$(call AutoProbe,qed)
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	cp -r /home/snicoe/qlogic-drivers/qlogic/qed/* $(PKG_BUILD_DIR)/
	echo 'ccflags-y += -DCONFIG_QED=1 -DCONFIG_QED_LL2=1 -DCONFIG_QED_L2=1 -DCONFIG_QED_SRIOV=1 -DCONFIG_QED_RDMA=1 -DCONFIG_QED_ROCE=1 -DCONFIG_QED_IWARP=1 -DCONFIG_QED_ISCSI=1 -DCONFIG_QED_FCOE=1 -DCONFIG_QED_OOO=1 -DCONFIG_QED_NVMETCP=1 -Wno-missing-prototypes -Wno-missing-declarations' &gt; $(PKG_BUILD_DIR)/Makefile
	echo 'qed-y := qed_main.o qed_dev.o qed_hw.o qed_cxt.o qed_selftest.o qed_debug.o qed_init_fw_funcs.o qed_init_ops.o qed_int.o qed_mcp.o qed_mng_tlv.o qed_sp_commands.o qed_spq.o qed_l2.o qed_ll2.o qed_sriov.o qed_vf.o qed_ptp.o qed_roce.o qed_rdma.o qed_iwarp.o qed_ooo.o qed_iscsi.o qed_fcoe.o qed_nvmetcp.o qed_nvmetcp_fw_funcs.o qed_devlink.o qed_dcbx.o qed_chain.o' &gt;&gt; $(PKG_BUILD_DIR)/Makefile
	echo 'obj-m += qed.o' &gt;&gt; $(PKG_BUILD_DIR)/Makefile
endef

define Build/Compile
	$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
endef

$(eval $(call KernelPackage,qed))

#vim package/kmod-qede/Makefile 写入
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=kmod-qede
PKG_VERSION:=6.12.87
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define KernelPackage/qede
&nbsp;SUBMENU:=Network Devices
&nbsp;TITLE:=QLogic QEDE 25/40/100Gb Ethernet driver
&nbsp;DEPENDS:=@PCI_SUPPORT +kmod-qed
&nbsp;FILES:=$(PKG_BUILD_DIR)/qede.ko
&nbsp;AUTOLOAD:=$(call AutoProbe,qede)
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	cp -r /home/snicoe/qlogic-drivers/qlogic/qede/* $(PKG_BUILD_DIR)/
	
	echo 'ccflags-y += -DCONFIG_QED_LL2=1 -DCONFIG_QED_SRIOV=1 -DCONFIG_QED_DCB=1 -DCONFIG_QED_RDMA=1 -DCONFIG_QED_ROCE=1 -DCONFIG_QED_IWARP=1 -Wno-missing-prototypes -Wno-missing-declarations' &gt; $(PKG_BUILD_DIR)/Makefile
	
	echo 'qede-y := qede_main.o qede_filter.o qede_fp.o qede_ethtool.o qede_rdma.o qede_ptp.o qede_dcbnl.o' &gt;&gt; $(PKG_BUILD_DIR)/Makefile
	echo 'obj-m += qede.o' &gt;&gt; $(PKG_BUILD_DIR)/Makefile
endef

define Build/Compile
	$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" \
		KBUILD_EXTRA_SYMBOLS="/home/snicoe/openwrt-sdk-25.12.4-x86-64_gcc-14.3.0_musl.Linux-x86_64/build_dir/target-x86_64_musl/linux-x86_64/symvers/kmod-qed.symvers" \
		modules
endef

$(eval $(call KernelPackage,qede))
</pre><p>五、准备编译</p><pre class="ql-syntax" spellcheck="false">./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
</pre><p>在<strong>Kernel modules &gt; Network Devices</strong>里面把qed和qede两个模块钩上，然后开始编译这两个模块</p><pre class="ql-syntax" spellcheck="false">make package/kmod-qede/compile V=s
make package/kmod-qed/compile V=s
</pre><p>六、安装kmod</p><p>理论上你就在bin/targets/x86/64/packages可以找到kmod-qed和kmod-qede这两个模块，scp到openwrt上，先安装qed，因为qede的依赖是qed。</p><pre class="ql-syntax" spellcheck="false">apk add --allow-untrusted kmod-qed-6.12.87-r1.apk
apk add --allow-untrusted kmod-qede-6.12.87-r1.apk
</pre><p>到这差不多就结束了，关键模块就装完了，到时候卡到了测试一下。</p><p><br></p><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/openwrt-2514qlogic-ql41-D3JIwirfOZe/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>FreeBSD提升带宽能力，分载多核CPU处理网卡队列</title>
    <guid>Y25md2BU3_v</guid>
    <pubDate>Wed, 01 Jul 2026 13:06:26 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>接上回说到，目前已经在家中基于FreeBSD的<a href="https://blog.arklink.org/i/freebsdipv6-mostly-L7mQG21zi_p/" rel="noopener noreferrer" target="_blank">FreeBSD IPv6 Mostly</a>，不过IPv6转发依然无法达到10Gbps的速度，大概在5Gbps左右，而且转发时，8C只占用了1C<img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Y25md2BU3_v/image-8270bd3882b7f97df4d481dc734a8208.png" width="436" height="105.86090047557329" style="">解决这个问题倒是也不难，因为我的FreeBSD跑在PVE上，需要手动开启多队列功能，我这里是8C就写8</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Y25md2BU3_v/image-819f6719b893cdd81fcad1fa243a67d7.png" width="437" height="193.9795147781586" style=""></p><p>接着在FreeBSD的/boot/loader.conf里面添加几行，接着重启一下</p><pre class="ql-syntax" spellcheck="false">hw.vtnet.mq_disable=0
hw.vtnet.max_queues=0
net.isr.bindthreads=1
net.isr.dispatch=direct
</pre><p>重启之后就能愉快的吃满多核也能跑满万兆了</p><p>    <img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Y25md2BU3_v/image-a5eeebabf716e168987aff54eb2eeb33.png" width="319" height="181.73135934895558" style=""><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Y25md2BU3_v/image-d8e55fe67f34a073bdf090271561f3d9.png" width="451" height="96.55518903771572" style=""></p><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/freebsdcpudui-lie-Y25md2BU3_v/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>(FreeBSD IPv6 Mostly)禁用IPv6以提升Telegram加载速度</title>
    <guid>ens-gDd45-x</guid>
    <pubDate>Wed, 24 Jun 2026 14:20:20 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>直接把官方的cidr地址块给deny了，返回Destination unreachable: Administratively prohibited，不用等客户端SYN发出等待回复了</p><pre class="ql-syntax" spellcheck="false">ipfw add 90 unreach6 admin-prohib ipv6 from any to 2001:b28:f23d::/48
ipfw add 91 unreach6 admin-prohib ipv6 from any to 2001:b28:f23f::/48
ipfw add 92 unreach6 admin-prohib ipv6 from any to 2001:67c:4e8::/48
ipfw add 93 unreach6 admin-prohib ipv6 from any to 2001:b28:f23c::/48
ipfw add 94 unreach6 admin-prohib ipv6 from any to 2a0a:f280::/32zh 
</pre><p>重启防火墙</p><pre class="ql-syntax" spellcheck="false">service ipfw restart
</pre><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/freebsd-ipv6-mostlyipv6telegram-ens-gDd45-x/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>FreeBSD搭建IPv6 Mostly网络</title>
    <guid>L7mQG21zi_p</guid>
    <pubDate>Wed, 10 Jun 2026 16:26:58 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p><strong>2026.6.14 UPDATE 主要实现完整NAT64路由，以及完善的RA通告，可管理的DNS，提升性能</strong></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/L7mQG21zi_p/image-cbd766e9bd5d63f237473847ff72ef50.png"></p><p>需要配置的组件，IPFW (NAT64)、Unbound (DNS64)、dhcpcd (获取上游IPv6-PD前缀)、Radvd (IPv6 ND)，AdGuardHome（配置缓存上游DNS）</p><p>注意！！！！，本片教程仅适用于内网，不要在公网使用，在公网使用配置防火墙之前务必知道自己在做什么。</p><h3>效果展示：</h3><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/L7mQG21zi_p/image-82cc51a4468e491c4b2059e3b9d079b8.png"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/L7mQG21zi_p/image-942f5324e3634cbbc3d770b8e3d94187.png"></p><p><br></p><p><strong>1、需要配置下本地的配置，为了防止失联，建议使用tty串口连接控制台，FreeBSD配置tty串口</strong></p><p>编辑/etc/loader.conf</p><pre class="ql-syntax" spellcheck="false">kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
zfs_load="YES"
boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
console="comconsole,vidconsole"
</pre><p>编辑/etc/ttys</p><pre class="ql-syntax" spellcheck="false">ttyu0	"/usr/libexec/getty 3wire.115200"	vt100	on secure
</pre><p>开启SSH</p><pre class="ql-syntax" spellcheck="false">sysrc sshd_enable="YES"
service sshd restart
</pre><p><strong>2、启用组件配置接口默认IP，编辑/etc/rc.conf，这里看着改，需要启用WAN口这里是net0的ND，不然不会生成默认路由</strong></p><p>首先需要额外安装组件，这两个组件在Freebsd中默认不提供</p><pre class="ql-syntax" spellcheck="false">pkg install adguardhome unbound radvd
</pre><p>编辑/etc/rc.conf</p><pre class="ql-syntax" spellcheck="false">hostname="Home0-NAT64-Router"
ifconfig_vtnet0="inet 10.10.0.64/24 netmask 255.255.255.0"
defaultrouter="10.10.0.13"
ifconfig_vtnet0_ipv6="inet6 accept_rtadv"
dhcpcd_enable="YES"
sshd_enable="YES"
moused_nondefault_enable="NO"
dumpdev="AUTO"
zfs_enable="YES"
gateway_enable="YES"
ipv6_gateway_enable="YES"
pf_enable="NO"
radvd_enable="YES"
adguardhome_enable="YES"
unbound_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"
</pre><p><strong>3、编辑IPFW，/etc/ipfw.rules，看不懂的话丢给AI就知道是啥了，AI太好用了知道吗，这个配置的安全性非常低，建议在非公网使用</strong></p><pre class="ql-syntax" spellcheck="false">#!/bin/sh
fwcmd="/sbin/ipfw"
${fwcmd} -f flush
${fwcmd} nat64lsn NAT64 destroy 2&gt;/dev/null

kldstat -q -m ipfw_nat64 || kldload ipfw_nat64 #启用内核组件
ipfw add 105 allow tcp from any to 10.10.0.64 22 in recv vtnet0 setup keep-state #放行SSH
ipfw add 106 allow tcp from any to 10.10.0.64 3000 in recv vtnet0 setup keep-state #放行ADG 端口

${fwcmd} add 50 tcp-setmss 1432 tcp from any to any tcpflags syn setup  #计算你的出口MTU
${fwcmd} nat64lsn NAT64 create prefix4 10.10.0.64/32 allow_private
${fwcmd} add 100 nat64lsn NAT64 ip6 from any to 64:ff9b::/96
${fwcmd} add 110 nat64lsn NAT64 ip4 from any to 10.10.0.64 in recv vtnet0
${fwcmd} add 115 allow ip6 from any to any in recv vtnet1 keep-state
${fwcmd} add 116 allow ip from any to 10.10.0.64 in recv vtnet0 keep-state
${fwcmd} add 65000 allow ip from any to any
</pre><p><strong>4、配置Unbound，编辑/usr/local/etc/unbound/unbound.conf，依旧看不懂的话就丢给AI</strong></p><pre class="ql-syntax" spellcheck="false">sserver:
	chroot: ""
&nbsp; &nbsp; username: "unbound"
	directory: "/usr/local/etc/unbound"
	interface: 2600:e641::64:64
&nbsp; &nbsp; interface: ::1
	interface: fe80::be24:11ff:fe75:1760%vtnet1
	port: 53
	access-control: 2600:e641::/64 allow
&nbsp; &nbsp; access-control: ::1 allow
	access-control: fe80::/10 allow
	access-control: ::/0 allow
	module-config: "dns64 iterator"
	dns64-prefix: 64:ff9b::/96
#	dns64-synthall: yes #启用这个选项会过滤所有IPv6的地址强制使用NAT64 
	prefetch: yes
	prefetch-key: yes
	msg-cache-size: 16m
	rrset-cache-size: 32m
	do-not-query-localhost: no

#	log-queries: no
#	verbosity: 2
#	logfile: "/var/log/unbound.log"	

forward-zone:
	name: "."
	forward-addr: 127.0.0.1@5353
</pre><p><strong>5、配置dhcpcd，从我的RouterOS上划了一段电信的/64，通过DHCP分配过来，但是注意，如果不想给局域网其他设备分配PD前缀，需要使用DUID Bouding，这样默认其他设备申请dhcpv6，RouterOS就会忽略请求，配置例子</strong></p><pre class="ql-syntax" spellcheck="false">/ipv6 dhcp-server
add comment=nat64-bsd-publicprefix interface=vlan10-general name=\
&nbsp;&nbsp;nat64-bsd-publicprefix
/ipv6 dhcp-server binding
add address=::/0 duid=0x0001000131bc22f1bc2411324e57 iaid=1 \
&nbsp;&nbsp;life-time=10m prefix-pool=ipv6-wan server=nat64-bsd-publicprefix
</pre><p>注意RouterOS上游更新之后并不会更新Bindings里面的地址，需要在dhcpv6-client里面添加一个脚本，这样就会重新下发新前缀了</p><pre class="ql-syntax" spellcheck="false">:if ($"pd-valid" = 1) do={
    :log info "IPv6 Prefix changed. Updating FreeBSD router binding..."
:local bindId [/ipv6 dhcp-server binding find where comment="freebsd-rt-prefix"]
:if ($bindId != "") do={
        /ipv6 dhcp-server binding set $bindId address=::/64
        :log info "FreeBSD router binding address has been reset to ::/64"
    } else={
        :log warning "DHCPv6 binding with comment 'freebsd-rt-prefix' not found."
    }
}
</pre><p>DUID FreeBSD安装dhcpcd后使用cat /var/db/dhcpcd/duid获取，删掉冒号写成0x 16进制就行</p><p>接下来编辑/usr/local/etc/dhcpcd.conf，从vtnet0获取地址，分配前缀到vtnet1</p><pre class="ql-syntax" spellcheck="false">ipv6only
noipv4
duid
persistent
option rapid_commit
require dhcp_server_identifier
allowinterfaces vtnet0
interface vtnet0
	ipv6rs
	ia_na 1
	ia_pd 2 vtnet1/0
</pre><p>配置一个触发器/usr/local/etc/dhcpcd.exit-hook，如果前缀发生变化会重新发起BOUND6，只要检测到BOUND6重启radvd，使旧的Prefix的lifetime 为 0, 不然客户端不会知道目前的前缀过期了</p><pre class="ql-syntax" spellcheck="false">#!/bin/sh

echo "[$(date)] Kernel Single -&gt; interface: $interface | Reason: $reason" &gt;&gt; /var/log/dhcpcd_test.log

INT_IFACE="vtnet1"
case "$reason" in
&nbsp; &nbsp; BOUND6)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if [ "$interface" = "$INT_IFACE" ]; then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sleep 1
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "[$(date)] detecting prefix change, reloading..."&gt;&gt; /var/log/dhcpcd_test.log
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /usr/sbin/service radvd restart &gt;/dev/null 2&gt;&amp;1
&nbsp; &nbsp; &nbsp; &nbsp; fi
&nbsp; &nbsp; &nbsp; &nbsp; ;;
esac

</pre><p><strong>6、最后配置Radvd，这是Freebsd默认的IPv6 NDP，编辑cat /etc/radvd.conf，注意需要有pref64和rdnss参数，IOS和Android客户端才会开启464XLAT模式，使用IPv6传输IPv4</strong></p><pre class="ql-syntax" spellcheck="false">interface vtnet1 {
&nbsp; &nbsp; AdvSendAdvert on;
&nbsp; &nbsp; MinRtrAdvInterval 3;
&nbsp; &nbsp; MaxRtrAdvInterval 10;
&nbsp; &nbsp; AdvLinkMTU 1492;  #让客户端使用1492 MTU如果你的出口是PPPOE拨号会有这个问题
&nbsp; &nbsp; AdvManagedFlag off;
&nbsp; &nbsp; AdvOtherConfigFlag on;

&nbsp; &nbsp; prefix ::/64 {
&nbsp; &nbsp; &nbsp; &nbsp; AdvOnLink on;
&nbsp; &nbsp; &nbsp; &nbsp; AdvAutonomous on;
&nbsp; &nbsp; &nbsp; &nbsp; AdvValidLifetime 7200;
&nbsp; &nbsp; &nbsp; &nbsp; AdvPreferredLifetime 1800;
	    DeprecatePrefix on;  #当接口地址更新之后将过期地址进行Deprecate
&nbsp; &nbsp; };

&nbsp; &nbsp; RDNSS 2600:e641::64:64 { #设置一个内网的DNS，建议找一个不用打公网前缀，虽然也可以使用link-local，但是部分操作系统不兼容
&nbsp; &nbsp; &nbsp; &nbsp; AdvRDNSSLifetime 1800;
&nbsp; &nbsp; };
&nbsp; &nbsp; nat64prefix 64:ff9b::/96 {
&nbsp; &nbsp; &nbsp; &nbsp; AdvValidLifetime 1800;
&nbsp; &nbsp; };
};
</pre><p>7、最后一步直接reboot重启大法就行了，理论重启玩所有的都OK了，但是注意，ipv6上游前缀更新会导致临时断网，因为ipv4 over ipv6 clat转换，会导致ipv4也会临时瘫痪</p>]]>
    </description>
    <link>https://blog.arklink.org/i/freebsdipv6ipv4nat6-L7mQG21zi_p/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>让Docker容器使用SLAAC配置IPv6</title>
    <guid>wRlVmkz4M6K</guid>
    <pubDate>Thu, 05 Feb 2026 13:11:25 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>最近在把家里网络全部拆了重来，把流量划分到完全不同VLAN里面这样我就知道什么设备什么业务在疯狂占用我的带宽，以防止被PCDN</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/wRlVmkz4M6K/image-4d797df84f896d47a530ac00c03389f6.png" width="429" height="107.41274658573596" style=""></p><p>但是遇到一个问题，BT应用最好需要用IPv6以提供更好的连接能力，但是家里的IPv6地址只能通过SLAAC获取，我也不想使用Docker的Host模式，这样如果容器被干炸了，这样入侵者会横向入侵我的网络，所以需要单独在这个VLAN里面单独进行NDP，但是Docker对IPv6支持很糟糕，普通模式只能使用静态地址，但是现在有ipvlan模式，这个模式下可以让接口桥接进L2，通过SLAAC自动配置容器IPv6地址。</p><p><br></p><p>先创建一个ipvlan网络</p><pre class="ql-syntax" spellcheck="false">docker network create -d ipvlan &nbsp;--subnet=10.103.0.0/24 \ 
--ip-range=10.103.0.48/28&nbsp;\
--gateway=10.103.0.1 \
--ipv6 \
--subnet=fd00:103::/64 \
-o parent=enp1s0.103 \
-o ipvlan_mode=l2 \
lan1_vlan_103
</pre><p>接着把容器加入到这个网络，需要添加参数让容器强制接受RA通告</p><pre class="ql-syntax" spellcheck="false">--sysctl net.ipv6.conf.all.accept_ra=2 &nbsp;
--sysctl net.ipv6.conf.eth0.accept_ra=2
</pre><p>接着测试一下，应该就没问题了</p><pre class="ql-syntax" spellcheck="false">docker exec -it uptime-kuma ping6 240e:f7:e01f:f1::30
PING 240e:f7:e01f:f1::30(240e:f7:e01f:f1::30) 56 data bytes
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=2 ttl=56 time=12.0 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=3 ttl=56 time=11.5 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=4 ttl=56 time=12.9 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=5 ttl=56 time=11.4 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=6 ttl=56 time=11.7 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=7 ttl=56 time=11.8 ms
64 bytes from 240e:f7:e01f:f1::30: icmp_seq=8 ttl=56 time=11.8 ms
--- 240e:f7:e01f:f1::30 ping statistics ---
8 packets transmitted, 7 received, 12.5% packet loss, time 28ms
rtt min/avg/max/mdev = 11.405/11.876/12.895/0.472 ms
</pre><p>在路由器里面也能看到被分配了IPv6地址</p><pre class="ql-syntax" spellcheck="false">31 D&nbsp;240e:xxx:xxxxxx:a500:11b:f035&nbsp;&nbsp;C0:25:A5:1B:F0:35&nbsp;vlan103-bt&nbsp;main
</pre>]]>
    </description>
    <link>https://blog.arklink.org/i/dockerslaacipv6-wRlVmkz4M6K/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>也许有很长时间没有更新Blog，写下一篇随记</title>
    <guid>2qLN78V3Vqf</guid>
    <pubDate>Sun, 26 Oct 2025 13:33:59 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>现在是周日晚上，我写下这篇博客时，心情异常平静和释怀。不过，既然没人看这篇博客，我也就无所谓了，只说点心里话。如果你认识我，哈哈，那真是很有缘分，因为这个链接我只在 Instagram 上公布过。</p><p>前情提要，青春伤痛文学警告⚠️，别怪我没提醒你，始于很多年前年轻的我。</p><p>年轻真好。</p><p><br></p><h3><strong>工作总结</strong></h3><p>十月我过得比较充实，这也是我工作满三个月的关键节点。哈哈，拿了三个月工资，扣除社保和五险一金，到手大约 *k 出头。在南京，这妥妥算是低收入人群了。不过，好在没有房贷、车贷和女朋友，也算勉强能活下去，倒不说其实挺爽，以前上学生活费1500左右完全不够爽，这次是真爽了。</p><p>工作内容主要是修东西，幸好东西不复杂，倒也能快速解决问题。同事和老板都还不错，只是工资太少了。但能双休，我也不敢要求太多。平时还能提前溜，也算不错。</p><p>工作总结就到这里。说实话，这个工资应对未来还是有些风险的。其他的就算了，摆烂吧。我的信用卡月均花销在 2-3k出头，基本没存下什么钱。至于原因，都花在吃喝和活动上了，下面会提到。</p><p><br></p><h3><strong>活动总结</strong></h3><p>十月也是我“现充”人生中比较充实的一个月。吃了好几场宴席，参加了好几轮同学聚会，以前减掉的体重又都回来了。好在没有涨太多，下个月开始减脂跑步。天气渐冷，效率可能会比较低，这是个小缺点。</p><p>这次同学聚会纯属偶然。九月份王先生晚上邀请我去海底捞，我也算是被拽去一起受“E 人”折磨。他们还给以前的老师打电话，我被当众催婚找女朋友，太难绷了。INFJ 表示：“是的”。大家也快五年没见了，王先生确实安静了不少，性格没有以前那么活跃了。阅读确实会给人带来平静，我最近在读一本小说《黑山之上》。说回正题，在这次同学聚会后，我们基本上十月每周都会聚会一次。</p><p><br></p><p>十月上旬国庆期间，我们计划了去江心洲露营烧烤，并参加了以前学校老师的婚礼。再次感叹当“现充”的感觉真棒，没有家人陪同的婚礼真是自由自在。</p><p>国庆调休的周日，下面简称“大聪明”（也是我以前交往比较好的一位女生，朋友关系），在整个十月份对我来说也是一个比较重要的人。她为人活泼，能量很高，主要是帮忙处理了一下外网环境，因为她的父亲需要和朋友联系才找到我。后续内容，我会在“个人活动”里继续写。</p><p><br></p><p>国庆过后很快来到十月中旬（其实顶多算国庆最后一天）。中旬我们倒也没做什么特别的，依然聚了一次。被某人突然拽去爬了古猿人洞，同行有王先生和其他三人。下午开始爬山，下山原本想去玩卡丁车，结果吃了闭门羹，挺好笑的。晚上吃了日料，虽然是“公式化开大会”，但好在味道还不错，也算圆满的一次聚会。</p><p>接下来的一周，我们也小聚了一下。“大聪明”拉来了黄总，她的好朋友。我们选了一家新街口烧烤。“大聪明”闲聊时口嗨说要去爬方山，结果“口嗨”上头，说要带上王先生一起去爬山。结果嘛，意外就来了。因为我们一直没有确定去不去，正巧黄总朋友生日派对，结果他推了派对和我们一起去爬山。但“口嗨”后那两个人发现不太现实，就临时取消了。</p><p>王先生这时候就比较郁闷了，发来了一大长串语音，说得很严重，严重到要绝交的那种。我提醒了“大聪明”，我们决定线下道歉。我们驱车前往王先生的学校，解释完后，王先生一直没有回复消息。得知我们已经在去的路上，他给我们发了个定位。下车后，我们换乘小电驴才找到他。他一个人很郁闷地呆在人行道旁边的井盖上。</p><p>此时南京已经入秋，天气不算很热，郊区晚上很安静，确实是个能思考问题的地方。王先生认为我们这些事情耽误了他，他需要重新审视我们的优先级。言下之意就是我们太疯狂了。最后“大聪明”也没能劝动。“大聪明”以前是这位王先生的暧昧对象（当事人看到了别打我，这确实是事实，狗头保命），这种关系很特殊。而且在我们国庆聚餐过后，王先生也天天和“大聪明”聊天，感情上也是叙叙旧了。这事也是听黄总说的，我也只是一个知道这层关系的知情人。</p><p>到最后还是男人劝男人，好说歹说才劝动他。我们一起走回他的学校送他回去。说实话，王先生很像以前的我，哎，看到自己的镜子，一时间不知道该说些什么。到这后面我们其实就准备走了，我打车送“大聪明”、黄总，还有刘总、张先生回家。不知道刘总、张先生？后续会提到，这也是一条重量级线索。</p><p><br></p><p>17号左右，我去参加了我二哥的婚礼。不过因为是家人，我其实是去当背景板的，参与感不强，所以篇幅小就提一下了。二哥在我们家庭阵营中不属于我们这一派，属于他母亲那一派别。虽然用“派别”来描述家族有些奇怪，但这么理解也没有问题。其实也没啥好说的，为此我还专门请了假。老板爽快批准，正好躲过了项目验收。就这么点钱，能少一事就少一事，正好享受一顿美食。</p><p>下面就来到中下旬了。这一次主角不是这波人，是我的高中同学。这两个人的近况也还行吧，一个人去奶茶店打工，一个人还在上培训学校，准备去做测试。虽然以前我已经暗示提醒过这也许不是一条很好的道路，他们真就是一条路走到黑了。但是我很尊重他们的选择，毕竟别人的道路我也没有权力干涉。</p><p>晚上去了趟海底捞，这是这个月第几次海底捞我已经记不清了。主要是去参加《明日方舟》和海底捞的联动去吃了一顿，433 元，吃了个寂寞，周边还没拿齐，血亏。吃完饭去唱 K，不过我个人不是很喜欢唱 K 这种活动，以前我是呆在角落刷手机的那一类人。硬要唱也能唱，但是能唱的不多。就这样，折腾到 11 点，也算是我人生中回家比较晚的一次。高中这个阶段，或许是我人生中比较平淡的几年，因为职高确实没有什么起伏。哎，没受过高中教育的洗礼，人生确实是缺了点什么，虽然这并不是一件坏事。</p><p><br></p><p>转眼这个十月也就剩下几天了。这天是 25 号，温度不是很高，也算凉爽。“大聪明”说我们去爬茅山，位置在隔壁镇江市句容的茅山风景区，道家圣地。虽然我个人不是很信这些东西，看客也不会要求那么多。这次同行只有刘总、黄总、“大聪明”、王先生和我。</p><p>哎？你是不是很好奇为什么张先生没来？张先生是刘总的男朋友，最近因为刘总的一些决定分手了，历时快六年的男女朋友关系结束了。原因我不能说，总之非常离谱。张先生在这段关系中纯属受害者。转回正题，这段关系我们在最后还会提到。</p><p>王先生、“大聪明”和我在云锦路地铁站集合，乘 2 号线转 S6 去黄梅。在黄梅，黄总开她的痛车（她哥的 Love Live Itasha）带我们去茅山。我们在 S6 出站看到车的时候很开心，现场气氛非常喜悦，大笑。这次王先生其实也和以前的他和解了。他专门带了他烤的曲奇，真的挺好吃的。</p><p>到了山脚下，景区大巴带我们去了山上。虽然我不是很懂宗教，个人是无神论者，但是我非常尊重。我和“大聪明”各花了 100 大洋去拜了财神，笑死，上班了就是不一样。下山准备刮彩票，结果五点景区下班，五块钱的彩票直接放飞了，血亏。</p><p>晚上我们和黄总去 S6 马群吃饭，一家东北菜。虽然和东北扯不上关系，除了那道鸡炖粉条，其他纯粹是“公式化”，但是味道不错，也算还行。晚饭的时候，我们也替刘总这段关系感到惋惜。正好张先生和王先生也需要谈谈，我们就直接把张先生拽到我们吃饭的地方。结果张先生真来了，我们就有点尴尬了。后来嘛，就是她们两个人在聊，我们在一边看着，也没有什么新的进展。</p><p><br></p><p>出门的时候刮了 20 块刮刮乐，我和“大聪明”各中了 20 块。不过我又把 20 块扔回去了，亏了 20 块。回家的地铁上，我们准备让刘总和张先生坐一起。我特地挑了三个位置和旁边的两个位置，结果刘总、“大聪明”和我就挤在三个座位上，王先生和张先生挤在一起，唉，我真服了。哎～结局也都知道了， <em>das ist schade</em> （某人多邻国打卡了半年也算有点用）。后面也没啥了，回到家，非常顺利地看到自己胖了好几斤。下个月真的要减肥了，包要减的，嗯，肯定。</p><p><br></p><h3><strong>关于我</strong></h3><p>现在是10月28号，昨天因为前天晚上没睡好，早早就睡了，没有来得及继续写，我们继续吧～</p><p><br></p><p>不过，我的故事可能要从九月份开始说起。九月其实也没什么大事，主要是搬家，不仅自己家要搬，公司也要搬，导致月初超级繁忙。但叙事总需要一条线索来贯穿全文，那就用“大聪明”来串联吧。</p><p>搬家这件事其实没什么好说的。前一天晚上，我在朋友圈发了一条动态说要开始搬家了，这位“大聪明”主动发微信来问我搬家怎么样。我只是开了句玩笑：“难不成要请你来帮我一起啊”，没想到她竟然答应了，完全出乎我的意料。不过，真让她来干体力活也不太好。所以，我上午先把比较重的东西都搬完了，剩下一些空盒子和一些小物件正好等她来一起搬。考虑到让爸妈看到我带女生回来不太好，也很难解释，我就找了个理由让他们先走，我自己去整理东西。</p><p>下午三点左右，“大聪明”来了，我们一起搬完了东西。晚上我“强制”留她下来吃了个饭。正好家附近有个购物中心，我们就找了家店吃饭。吃完后，她竟然主动提出去楼下的金鹰超市逛逛，帮我采购东西。说实话，这也完全出乎我的意料。反正也不好拒绝，就依她吧，毕竟以后搬回去可能还要再“麻烦”她。</p><p>可能是她平时生活太大手大脚，没有意识到这已经不是正常的男性朋友关系了，说“男闺蜜”也有点过了。这时候提出升级关系完全没有问题，可惜啊，可惜，我放弃了这个机会。因为她不太可能答应，待在舒适区挺好，升级关系也许并不是一个很好的选择，毕竟我们很多年前已经提出过类似的试探，但都打哈哈过去了。所以就这样吧，碎碎念请不要介意。</p><p>到这里，平淡的九月就差不多过去了。</p><p>十月份到国庆期间的主要流程上面已经说过了，就不重复描述了，直接跳转到 D 老师的婚礼吧。这场婚礼遇到了以前的 S 老师，S 老师和 D 老师以前是同事关系，也遇到了我们以前的校长，校长是作为这场婚礼的证婚人，所以挺有意思。</p><p>婚礼开始前，我们和 D 老师一起拍了一张照片，“大聪明”和我在前面，也是D老师提出的，我们之前上学就是“欢喜冤家”。不得不说，当时脸已经笑得有点僵住了，真的很难绷。唉，无所谓了，不过“罪恶的心理”就从这一刻开始了。从这时候开始，我就已经开始考虑要不要选择升级关系，并且平时的试探也频繁了起来。但是，大部分都以失败告终，或者说没有任何回复，当然这也是情理之中。还有一个原因是王先生这层关系，这也是我们之间一直保持克制的原因之一。</p><p>写了这么多心理活动，各位看客可能都会觉得我太怂了，直接表白多省事。可惜对于我这种刚享受完“现充”美好的人来说，我还想在舒适区多待一段时间。未来有一天说不定呢，对吧？不过，当时我提出劝王先生的决定，也算是一个“绊脚石”，但也是不得已的事情。与其作为参与者，我更愿意成为旁观者，某一天我们爬完山之后，想起来我还有一对对讲机没用，被大聪明翻出来了，最后她拿走了一个，到现在还在她那，我们去年还一起约定了来我这放烟花，口嗨预定，也许真的是我的错觉？</p><p>不过接下来的，一个月我需要完全摒弃这份思想，因为这已经严重影响到我的思考能力，要不说恋爱爱情这种东西会冲昏头，还是不是很喜欢这种被多巴胺支配脑袋的感觉，这也许是一件好事吧。。。。</p><p><br></p><iframe class="ql-video" frameborder="0" allowfullscreen="true" src="https://open.spotify.com/embed/track/1dtJoUt5MrocAeZNodChwJ?utm_source=generator" data-blot-formatter-unclickable-bound="true"></iframe><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/blogsui-ji-2qLN78V3Vqf/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>万幸人还活着，这次更新下BSDRP的帖子，初上手。</title>
    <guid>j9wBuQF4dVk</guid>
    <pubDate>Sun, 10 Aug 2025 11:39:29 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>下载倒是很简单，直接在sourceforge下载就行<a href="https://sourceforge.net/projects/bsdrp/files/BSD_Router_Project/1.994/amd64/" rel="noopener noreferrer" target="_blank">https://sourceforge.net/projects/bsdrp/files/BSD_Router_Project/1.994/amd64/</a></p><p>因为在PVE中安装，所以先要创建一个虚拟机，没有特殊配置，记得删掉创建时候的硬盘。</p><p>1.先解压xz文件得到img</p><pre class="ql-syntax" spellcheck="false">unxz BSDRP-1.994-full-amd64-vga.img.xz
</pre><p>2.把img写到虚拟机磁盘，在虚拟机硬件里面双击未使用的硬盘挂载，再调整选项里面的引导顺序，直接就可以开机了。</p><pre class="ql-syntax" spellcheck="false">qm importdisk 111 BSDRP-1.994-full-amd64-vga.img local-lvm
</pre><p>可以添加一块新的硬盘到虚拟机</p><pre class="ql-syntax" spellcheck="false">sysctl kern.disks #查看有几块磁盘，默认da0是启动磁盘
system	install da1 #安装操作系统
</pre><p>3.设置密码，默认root没有密码</p><pre class="ql-syntax" spellcheck="false">passwd root
</pre><p>4.开机ssh配置一个临时的IP地址方便远程登陆（为什么下面会说）</p><pre class="ql-syntax" spellcheck="false">vim /etc/rc.conf #添加sshd_enable="YES" 或者 sysrc sshd_enable="YES" 都一样都是写入rc file
service sshd start &amp;&amp; service sshd enable
ifconfig vtnet0 192.168.172.10/24 #配置地址
</pre><p>5.这时候就可以ssh登陆到路由器了</p><pre class="ql-syntax" spellcheck="false">snicoe@macmini ~ % ssh root@192.168.172.10 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
The authenticity of host '192.168.172.10 (192.168.172.10)' can't be established.
ED25519 key fingerprint is SHA256:Uz0WCAcC308fv3toBlNmaQgJxfAAvdpZ1rqVjgxJJjc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.172.10' (ED25519) to the list of known hosts.
(root@192.168.172.10) Password for root@router.bsdrp.net:
Last login: Sun Aug 10 11:38:15 2025
root@router:~ #
</pre><p>6.首先我们先要保存配置让rc.conf生效，因为系统本身是以只读模式运行的/etc下的所有都是挂载在tmpfs下，一重启就没了。</p><pre class="ql-syntax" spellcheck="false">config save #可选自动保存
sysrc autosave_enable=yes
service autosave start
</pre><p>7.配置IP默认网关和DNS到配置文件</p><pre class="ql-syntax" spellcheck="false">sysrc ifconfig_vtnet0="inet 192.168.172.10/24"
sysrc defaultrouter="192.168.172.1"
sysrc ifconfig_vtnet0_ipv6="inet6 2600:1172::10/64"
sysrc ipv6_defaultrouter="2600:1172::1"
vim /etc/resolv.conf #nameserver 192.168.172.1
service netif restart
service routing restart
config save
</pre>]]>
    </description>
    <link>https://blog.arklink.org/i/bsdrp-j9wBuQF4dVk/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>站在了人生的第一个十字路口｜碎碎念日记</title>
    <guid>6v-FTpv21pd</guid>
    <pubDate>Fri, 23 May 2025 11:03:32 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p><em>本来这篇是准备写在日记里面不公开的，但是吧，想想陌生人也就无所谓了，索性就放在可以被搜索引擎检索到的博客里面吧，碎碎念而已，没兴趣可以直接关掉，要骂我矫情还是算了。</em></p><p><br></p><p>现在是2024年5月23日晚上7点，天气小雨，写这篇文章的的起因还是因为专转本考寄了，这也是唯一一次获得全日制本科的机会，其实在上个月查询分数的时候就已经有数了，只不过这一次是确定完蛋了，221分还是太低了。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6v-FTpv21pd/image-1b20caf49751871d2e14b841b8d47a62.jpg"></p><p>但是我并不后悔，因为我已经达到了我的目标210+，要不说我是无敌控分王，不过这一次分数线在227，能靠自学干进前80我已经知足了，你要说在专转本的学习过程中收获了什么，其实也有，基本上完整系统的学习了一遍计算机网络，这和我未来想走的路也有一定的重合，所以我并不觉得我毫无收获，某种程度上来说，这一次才是真正意义上站在人生的岔路口上，今年21岁，上一次失利是在中考，当时其实也是相同的情况，不过当时情绪控制确实没有现在成熟，我的所有任课老师都对我寄予厚望可惜最后还是失败了，你要说有不甘确实是有的，失去了2年的缓冲期，就现在这个经济情况饿不死就算好的了，有好有坏吧。未来的路还长，纠结于此确实不是一个好办法。</p><p><br></p><p>所以现在面前的一个非常重要的选择是专升本还是直接工作，专升本意义不是非常大，因为很可能跨专业，而且对于我擅长的工作帮助不是很大，而且有可能白白浪费掉一些东西，我目前所在的城市其实没有我的意向岗位，基本就是销售外卖零售理货这些是个人都能干，总有人说脱不下孔乙己长衫，但是试过才知道这种路根本就是一路走到黑，我是想拿到毕业证后去其他城市寻找机会，但是目前我的专业云计算网络运维工程师又需要HCIE和AWS SAA之类的证书撑着，但是考取这些证书又需要一定的缓冲期，完全和目前的状况冲突，也许专升本能得到一定的缓冲，但是还得应付面前的工作，截止目前我还是没有找到有空余时间的工作且能解决温饱持续提升的方法，一根筋两头堵了。。</p><p><br></p><p>我觉得我自己是一个彻底的悲观主义者，或者说有点完美主义者，只会做成功率8成以上的事情，mbti类型是INFJ这种奇葩，事情非常容易往最极端的情况去想，想的多做得少，内耗非常严重，被各种招聘拒绝的千百遍，感觉有幸会患上C-PTSD，中文应该叫复合性创伤后应激障碍，甚至想过轻生，刀就在旁边，嘛，不过转念一想，这种方法也许是没有办法的办法了，我是属于那种啥都想了解一点的人，并没有什么特别感兴趣的事情，不过招聘经过我这几个月的实践，哎～还是无法克服，现在这种看不到头的或者说一条大路通到黑的情况，也许是我的一种失误，接下来的路注定会非常艰难，祝我好运吧。。。</p><p><br></p><p>计划想做的事情：先找份工作填饱肚子-&gt; 考取IE数通证书/AWS SAA -&gt; 学习第二门语言也许是德语/英语 -&gt; 跳槽换工作</p>]]>
    </description>
    <link>https://blog.arklink.org/i/ri-ji-6v-FTpv21pd/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>重开吧😅</title>
    <guid>AGSY5aA_0bO</guid>
    <pubDate>Wed, 07 May 2025 12:25:28 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>赶紧tm爆炸吧，算了懒得骂了，打螺丝不毕业没毕业都打不了，“树挪死，人挪活”话是这么说，但是希望这沟槽的世界赶紧爆炸，哪天一觉醒不了就更好了，活着是为了啥？😅</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/AGSY5aA_0bO/image-7e35b9e52e5899342630ee59782973bd.jpg"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/重开吧-AGSY5aA_0bO/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>RouterOS v7.18.1 已支持IPv6 Fasttrack加速包转发</title>
    <guid>BXmfsRQnp0m</guid>
    <pubDate>Mon, 10 Mar 2025 11:52:29 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>RouterOS fasttrack的原理简单粗暴，就是减少过防火墙的次数，简单来说，如果第一个包过了一次防火墙，接下来的包就会直接跳过防火墙，直接通过，从而减少每个包都经过防火墙条目匹配的性能消耗。</p><p><br></p><h2>开启命令</h2><p>/ipv6 firewall filter</p><pre class="ql-syntax" spellcheck="false">add action=fasttrack-connection chain=forward connection-state=\
    established,related
</pre><p>打开ipv6 settings就可以看到fasttrack已经启用并且计数器有计数。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/BXmfsRQnp0m/image-3ddbc480216a48b560726bad4a3052bb.png"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/BXmfsRQnp0m/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>利用Yubikey的OpenPGP在远程机器上签名和加密文件</title>
    <guid>bX2K3pq7z62</guid>
    <pubDate>Thu, 02 Jan 2025 08:47:51 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>最近在玩OpenPGP遇到一个问题，如何在远程机器上使用Yubikey的OpenPGP功能签名和加密，本地可以使用kleopatra或者用gpg命令来签名加密文件，ssh登陆到远程服务器上是没法用本地gpg usb智能卡来签名加密文件，由于这种抽象玩法比较少见，但好歹找到了解决办法。</p><p><strong> Linux到Linux</strong></p><p>本质上是转发 gpg-agent，unix socket对unix socket是没有什么问题的，兼容性比较好。</p><p><em>参考：</em></p><p>https://security.stackexchange.com/questions/166280/how-to-use-yubikey-through-gnupg-on-remote-server</p><p><strong>Windows 到 Linux</strong></p><p>windows到Linux有个大坑，引用</p><p>&gt; <a href="https://github.com/PowerShell/Win32-OpenSSH/issues/1564" rel="noopener noreferrer" target="_blank">https://github.com/PowerShell/Win32-OpenSSH/issues/1564</a></p><p>ssh 只能转发 unix socket，OpenSSH_for_Windows并没有实现，这个issue依然是Open，去搜了一圈貌似官方尚未解决这个问题。</p><p>&gt; <a href="https://dev.gnupg.org/T3883" rel="noopener noreferrer" target="_blank">https://dev.gnupg.org/T3883</a></p><p>&gt; <a href="https://github.com/rupor-github/win-gpg-agent" rel="noopener noreferrer" target="_blank">https://github.com/rupor-github/win-gpg-agent</a></p><p>不过原issue的作者提供了一个Rust写的解决方案，试了下完美解决了这个问题。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/bX2K3pq7z62/image-e8ab92c17bdee2cf416ac7ddbd55dfd1.png"></p><p>&gt;<a href="https://github.com/BusyJay/gpg-bridge/tree/v0.1.1/src" rel="noopener noreferrer" target="_blank">https://github.com/BusyJay/gpg-bridge/tree/v0.1.1/src</a></p><p>1. 安装：gpg-bridge</p><pre class="ql-syntax" spellcheck="false">cargo install -f --git https://github.com/busyjay/gpg-bridge
</pre><p>2. 运行</p><pre class="ql-syntax" spellcheck="false">gpg-bridge.exe --extra 127.0.0.1:4321
</pre><p>4. 获取远程gpg-agent路径</p><p>gpgconf --list-dir agent-socket</p><p>3. 编辑配置文件</p><p>本机`vim ~/.ssh/config`添加</p><pre class="ql-syntax" spellcheck="false">Host&nbsp;
	RemoteForward&nbsp;&nbsp;/run/user/1000/gnupg/S.gpg-agent&nbsp;127.0.0.1:4321
	ForwardAgent yes #&lt;远程gpg-agent&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;gpg-bridge监听端口&gt;
</pre><p>4. 远程机器</p><p>编辑`/etc/ssh/sshd_config`添加</p><pre class="ql-syntax" spellcheck="false">StreamLocalBindUnlink yes
</pre><p>5. 重启sshd</p><pre class="ql-syntax" spellcheck="false">systemctl restart sshd&nbsp;
</pre><p><strong>用WSL或者用usbip转发yubikey</strong></p><p>这种办法也是一种办法，但是比第二种办法还折腾，遂没有采用。</p>]]>
    </description>
    <link>https://blog.arklink.org/i/bX2K3pq7z62/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>使用Azure通信服务(Communication Service)使用SMTP发送电子邮件</title>
    <guid>6xE0hisL-5R</guid>
    <pubDate>Wed, 25 Dec 2024 12:45:51 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>目前几个大厂提供了邮件发送服务，就是可以使用自己的域名发送邮件，目前AWS SNS(</p><p><strong>Simple Notification Service</strong>)比较复杂，而且风控比较严格，还需要发工单才能提升配额，要么使用AWS Workmail单用户(4 USD/月)。而且滥用价格直接爆炸，不是特别推荐，这几天逛服务看到了Azure的communication service提供邮件发送服务，不提供接收邮件，但是可以使用CloudFlare的邮件转发来收取邮件，发送邮件价格(0.00025USD/email)，也发不了几封邮件其实也无所谓，基本等于免费，但是注意有发送频率的限制，还有一些坑。</p><p>1.创建资源</p><p>有两个一个是通信服务，另一个是电子邮件通信服务，直接在Azure搜索就能搜索到这两个资源</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-8b7507746a22ff59da2d1b5397a257b4.png"></p><p>2.创建资源</p><p>没有坑，选自资源组和资源名称就可以，按步骤深渊并创建</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-44bbe7fea074d37f064dffbabd6dbf2b.png"></p><p>3.点开创建的"电子邮件通信服务资源"选择预配域(zH-ms流汗黄豆)</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-f00e805cd0b93ac84ac9237a15dd31a2.png"></p><p>导航到添加域-&gt; 自定义域</p><p>添加完会让你验证域名所有权，你需要按步骤在DNS托管商添加记录，一共是4个，首先是所有权认证，添加一个TXT记录类似“ms-domain-verification=xxxxxx”，这个一般很快就生效。</p><p>接下来是大头三个记录有个大坑分别是(SPF, DKIM, DKIM2)</p><p>SPF很简单直接添加TXT记录类似"sales.us.notification.azurecommtest.netv=spf1" "include:spf.protection.outlook.com -all"</p><p>DKIM有个大坑，如果你使用三级域名(<strong>xxx</strong>.sni.com)CNAME接入Azure，你需要在原本“selector1-azurecomm-prod-net._domainkey”后面添加</p><p>.<strong>xxx</strong>，变成“selector1-azurecomm-prod-net._domainkey.<strong>xxx</strong>”</p><p>Azure才会认为你的记录有效，DKMI2同理，等待几分钟，应该就全绿了。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-d8ab820725527c784f790c3b153c4a11.png"></p><p>4.添加别名</p><p>导航到通信服务的资源下会多出一个资源“电子通信服务域”-&gt;MailFrom address</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-6bba88c2e191ed24a72f6ba239d9c2d0.png"></p><p>你会发现这里的+Add按钮是灰色，这是Azure限制了直接添加，但是可以用Cloudshell添加目前没有限制，以后不知道会不会限制。</p><p><a href="https://stackoverflow.com/questions/78214575/why-is-the-add-button-disabled-in-azure-email-communication-services-mailfrom-ad" rel="noopener noreferrer" target="_blank">https://stackoverflow.com/questions/78214575/why-is-the-add-button-disabled-in-azure-email-communication-services-mailfrom-ad</a></p><p>命令格式：</p><pre class="ql-syntax" spellcheck="false">az communication email domain sender-username create --email-service-name "&lt;资源名称&gt;" --resource-group "&lt;资源组名称&gt;" --domain-name "&lt;域名&gt;" --sender-username "&lt;别名@前&gt;" --username "&lt;别名@前&gt;" --display-name "&lt;收件人显示的名称&gt;"
</pre><p>如果没有报错并返回一个JSON显示Successful则添加成功。</p><p>5.测试电子邮件</p><p>导航到通信服务创建的资源，在你的资源组下可以找到，导航到“电子邮件”-&gt;"使用电子邮件"</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-3d7557af9886bc39823109a5add6e884.png"></p><p>接下来是重头戏(配置SMTP中继)</p><p>因为Azure这一套玩意微软也没有一个标准，使用SMTP发信非常复杂。</p><p>## 新建一个应用程序(不是企业应用程序)</p><p>为了方便你我直接放链接https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps</p><p>1.路径Microsoft Entar ID -&gt; 应用程序注册 -&gt; 新注册</p><p>不需要变更什么东西，只需要选一个名称，这个app负责账户验证。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-46e2beb50c579ec294288a01e7137327.png"></p><p>需要你记住应用程序(客户端)ID和目录(租户)ID后面需要用</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-ceda8acdff7b88c472d99f8bd8ace6c6.png"></p><p>导航到证书和密码-&gt;客户端密码-&gt;新建客户端密码</p><p>记住值Value，后面需要用</p><p><br></p><p>打开你的Azure订阅</p><p>&lt;https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2&gt;</p><p>你的订阅-&gt; 访问控制(标识和访问管理) 英文叫IAM -&gt;添加自定义角色</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-a4e99bc47c83481831bf0b21e6ae18ef.png"></p><p>名字随意，权限选择克隆角色，克隆对象读者(Reader)~~我真服了Azure这个垃圾翻译</p><p>权限只需要这两个</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-7214985492f0e409eb661ab82ff4b252.png"></p><p>添加-&gt; 添加角色分配</p><p>搜索你刚刚添加角色的名称，点下一步成员，选择成员搜索你刚刚创建的应用程序名称，不要理会提示，选择应用，最后审阅分配。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-5ef2de58a89c72224ddf69d81c634f75.png"></p><p>随便找个支持smtp的应用测试发送邮件，我这里用RouterOS自带的Email功能</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-8f3adfc16831281f8832abc60b929245.png"></p><p>服务器地址：smtp.azurecomm.net</p><p>端口：587</p><p>TLS：允许加密</p><p>用户名：通信服务资源名称 . 应用程序(客户端)ID . 目录(租户)ID&nbsp;（这里使用英文句号分开，不需要空格）&lt;/br&gt;</p><p>密码：App创建的密码值Value</p><p>理论上就可以发送成功了</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/6xE0hisL-5R/image-1be064e0f5a88a86ff9ccc445eb19443.png"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/azuredianziyoujian-6xE0hisL-5R/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>简单实验了下在Oracle ARM实例上QEMU运行X86 Linux的可能性</title>
    <guid>JdPUenzOAr_</guid>
    <pubDate>Fri, 20 Dec 2024 14:34:00 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>先说结论：可行，但是会非常缓慢，因为Oracle并没有开启虚拟化嵌套，也就是说qemu不能使用KVM加速。</p><p>接下来说明实验流程：</p><p>一、确保你的系统是Ubuntu22.04(因为我只实验了这个系统嘿嘿)</p><p>安装软件包:qemu-system-x86,libguestfs-tools</p><pre class="ql-syntax" spellcheck="false">apt install libguestfs-tools qemu-system-x86
</pre><p><br></p><p>二、下载cloudinit镜像</p><pre class="ql-syntax" spellcheck="false">wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
</pre><p><br></p><p>三、配置root用户密码(因为从头安装效率太低，而且使用cloud-init貌似有bug，我们使用virt-customize配置镜像，这里123456就是密码，等待几分钟)</p><pre class="ql-syntax" spellcheck="false">sudo virt-customize -a -v -x jammy-server-cloudimg-amd64.img --root-password password:123456
</pre><p><br></p><p>四、挂载镜像启动虚拟机</p><pre class="ql-syntax" spellcheck="false">sudo qemu-system-x86_64 -smp 4 -m 8G -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0 -vnc :1 -cpu EPYC-v3 -drive file=jammy-server-cloudimg-amd64.img,if=virtio,cache=none -cdrom seed.iso -boot a
</pre><p>参数解释</p><p>-smp4 为虚拟机启用4个核心(但实际上qemu使用软模拟只是用宿主机单个核心)</p><p>-vnc :1 在127.0.0.1:5901 上启用vnc</p><p>剩下的参数一看就懂了，我这里尝试了cloud-init配置，不过没用，如果你看着不顺眼看一删掉-cdrom</p><p><br></p><p>五、不过因为服务器没有GUI，可以借用CloudFlare的ZeroTrust隧道来显示VNC界面。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/JdPUenzOAr_/image-4e91060271705e2b91f478c1ebf096a4.png" width="582" height="262.0943541665167" style=""></p><p>最后在Access-&gt;应用程序-&gt;自托管，创建一个应用</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/JdPUenzOAr_/image-990ae631e0bfc413fa7ede3fbfbff40e.png" width="563" height="334.5389630332184" style=""></p><p><br></p><p>六、调试</p><p>可以看到效率确实很低，宿主机的三个核心只有单颗吃满，一核有难多核围观，因为没有kvm只有这个效率了。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/JdPUenzOAr_/image-449ca55d16a871bad07a4ba708208b16.png" width="572" height="378.78204236059133" style=""></p><p>如果顺利启动打开vnc界面就可以看到tty界面了。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/JdPUenzOAr_/image-8a6951fc86c57972b89e2c1b5b325a77.png" width="574" height="441.1947683284273" style=""></p><p>测试了下，网络用NAT只有100M都不到的带宽，而且非常卡，基本不可用，每对硬盘读写一次就卡一下，单核直接吃满，目前也就图一乐(摊手</p>]]>
    </description>
    <link>https://blog.arklink.org/i/oracle-armqemx86-linux-JdPUenzOAr_/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>在IPv6 Only的环境下使用cloudflared</title>
    <guid>J8RvKo2S-7_</guid>
    <pubDate>Fri, 22 Nov 2024 12:16:52 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>主要是cloudflare的这个agent会优先使用ipv4去连接，并不会使用ipv6，导致可能连不上cloudflare，但是Cloudflared的github貌似已经有人提了这个问题，说会添加自动切换，但是目前还是不会切换(摊手)，解决倒是也很简单。</p><pre class="ql-syntax" spellcheck="false">sudo systemctl edit --full cloudflared.service
</pre><p>编辑添加 --edge-ip-version 6</p><pre class="ql-syntax" spellcheck="false">ExecStart=/usr/bin/cloudflared --edge-ip-version 6 --no-autoupdate tunnel run....
</pre><p>重启</p><pre class="ql-syntax" spellcheck="false">sudo systemctl restart cloudflared
</pre><p>接下来看一下status已经使用ipv6连接了</p><pre class="ql-syntax" spellcheck="false">...event=0 ip=2606:4700:a0::9 location=hkg01 protocol=quic
</pre><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/ipv6-onlycloudflared-J8RvKo2S-7_/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>“终不似，少年游”</title>
    <guid>nqHqbnqbBnX</guid>
    <pubDate>Tue, 29 Oct 2024 15:32:19 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p><iframe style="border-radius:12px" src="https://open.spotify.com/embed/track/0WbMK4wrZ1wFSty9F7FCgu?utm_source=generator" width="100%" height="152" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe><br></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/nqHqbnqbBnX/image-bc3a45c46e2faf62a6551903528ec96b.jpg"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/“终不似-少年游-nqHqbnqbBnX/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>使用image builder定制指定rootfs大小openwrt镜像</title>
    <guid>eTq9OqHDN2I</guid>
    <pubDate>Thu, 24 Oct 2024 06:14:49 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>之前一直在用别人编译好的镜像，也尝试了openwrt官方的<a href="https://firmware-selector.openwrt.org/" rel="noopener noreferrer" target="_blank">OpenWrt Firmware Selector</a> ，这东西没法生成指定rootfs大小的镜像，如果你需要一个超级精简的镜像可以使用这个官方的构建器，这玩意有时候会抽风，可能不是你的网问题，是这玩意真boom了(笑</p><p>准备工作</p><p>	1.使用官方的指引进行环境配置：<a href="https://openwrt.org/docs/guide-user/additional-software/imagebuilder" rel="noopener noreferrer" target="_blank">https://openwrt.org/docs/guide-user/additional-software/imagebuilder</a></p><p>		我这里使用ubuntu 22.04，使用apt安装基础的编译工具</p><pre class="ql-syntax" spellcheck="false">  sudo apt install build-essential libncurses-dev zlib1g-dev gawk git \
  gettext libssl-dev xsltproc rsync wget unzip python3 python3-distutils		
</pre><p>	2.	下载官方的image builder：<a href="https://archive.openwrt.org/releases/23.05.4/targets/x86/64/openwrt-imagebuilder-23.05.4-x86-64.Linux-x86_64.tar.xz" rel="noopener noreferrer" target="_blank">https://archive.openwrt.org/releases/23.05.4/targets/x86/64/openwrt-imagebuilder-23.05.4-x86-64.Linux-x86_64.tar.xz</a></p><p>		解压它</p><pre class="ql-syntax" spellcheck="false">  tar -xvf openwrt-imagebuilder*
</pre><p>	3.	添加需要的包，如果你使用passwall这里需要dnsmasq-full，但注意这会与dnsmasq冲突需要列表后面添加-dnsmasq排除，这里额外添加了keepalived，wireguard-luci，ddns-script和中文界面。</p><p>		官方源：</p><pre class="ql-syntax" spellcheck="false">   base-files busybox ca-bundle dnsmasq-full dropbear e2fsprogs firewall4 fstools grub2-bios-setup kmod-button-hotplug kmod-nft-offload kmod-nft-tproxy iptables-nft&nbsp;iptables-mod-socket iptables-mod-tproxy libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uci uclient-fetch urandom-seed urngd kmod-amazon-ena kmod-amd-xgbe kmod-bnx2 kmod-e1000e kmod-e1000 kmod-forcedeth kmod-fs-vfat kmod-igb kmod-igc kmod-ixgbe kmod-r8169 kmod-tg3 luci ddns-scripts ddns-scripts-cloudflare ddns-scripts-services luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-i18n-opkg-zh-cn luci-proto-wireguard keepalived&nbsp;-dnsmasq
</pre><p>	   如果有第三方包添加进packages目录下，并添加在包后面，我这里添加了<a href="https://github.com/sirpdboy/luci-app-ddns-go" rel="noopener noreferrer" target="_blank">DDNS-GO</a>和<a href="https://github.com/xiaorouji/openwrt-passwall" rel="noopener noreferrer" target="_blank">passwall</a>插件</p><p>	   定制插件：</p><pre class="ql-syntax" spellcheck="false"> chinadns-ng ddns-go dns2socks dns2tcp hysteria ipt2socks luci-app-passwall luci-app-ddns-go microsocks naiveproxy shadowsocks-rust-sslocal shadowsocks-rust-ssserver shadowsocksr-libev-ssr-local shadowsocksr-libev-ssr-redir shadowsocksr-libev-ssr-server simple-obfs sing-box tcping trojan-plus tuic-client v2ray-geoip v2ray-geosite v2ray-plugin xray-core xray-plugin -dnsmasq
</pre><p>	4.   编辑.config文件，修改rootfs分区大小，vim 斜杠搜索ROOTFS_PARTSIZE，修改为1024也就是1GB大小，这个空间是肯定够的。</p><p>		  CONFIG_TARGET_ROOTFS_PARTSIZE=1024</p><p>    5.   开始构建</p><p>		  构建命令：</p><pre class="ql-syntax" spellcheck="false">    make image PROFILE="generic" PACKAGES="base-files busybox ca-bundle dnsmasq-full dropbear e2fsprogs firewall4 fstools grub2-bios-setup kmod-button-hotplug kmod-nft-offload kmod-nft-tproxy iptables-nft&nbsp;iptables-mod-socket iptables-mod-tproxy libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uci uclient-fetch urandom-seed urngd kmod-amazon-ena kmod-amd-xgbe kmod-bnx2 kmod-e1000e kmod-e1000 kmod-forcedeth kmod-fs-vfat kmod-igb kmod-igc kmod-ixgbe kmod-r8169 kmod-tg3 luci ddns-scripts ddns-scripts-cloudflare ddns-scripts-services luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-i18n-opkg-zh-cn luci-proto-wireguard keepalived luci-app-travelmate chinadns-ng ddns-go dns2socks dns2tcp hysteria ipt2socks luci-app-passwall luci-app-ddns-go microsocks naiveproxy shadowsocks-rust-sslocal shadowsocks-rust-ssserver shadowsocksr-libev-ssr-local shadowsocksr-libev-ssr-redir shadowsocksr-libev-ssr-server simple-obfs sing-box tcping trojan-plus tuic-client v2ray-geoip v2ray-geosite v2ray-plugin xray-core xray-plugin -dnsmasq"
</pre><p>	 插件少几分钟就构建完成了，非常快。</p><p>构建完成的文件在/bin/targets/x86/64</p>]]>
    </description>
    <link>https://blog.arklink.org/i/image-builderrootfsopenwrt-eTq9OqHDN2I/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>去了人生第一次Live House | ChiliChill 南京场</title>
    <guid>vzQ3QxPnjuW</guid>
    <pubDate>Mon, 14 Oct 2024 02:36:16 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<iframe class="ql-video" frameborder="0" allowfullscreen="true" src="https://open.spotify.com/embed/album/45dBEfLCrToFALMnYYUTz6?utm_source=generator" data-blot-formatter-unclickable-bound="true" width="315" height="157.5" style=""></iframe><p><em><u>（签售的时候已经提醒老师Spotify更新歌词了)</u></em></p><p><br></p><p><strong>拍摄素材下载连接：</strong></p><p><strong>Onedrive For Business: 正在上传..</strong></p><p><strong>Magnet: </strong>7c3c11923999c947da85e6fe70680398b54c4389</p><p><em><u>全是S24 Plus录制，视频图片尺寸包含16:9, 4:3 , 1:1，不包含全程，所有素材随意使用(1:1的视频照片只有12P和1080p@30fps，三星也是大坑，这个红色溢出太难绷了，现场灯光对于这颗三星gn3也是一场试炼（，BT为了带宽平衡，暂时会ban掉迅雷)</u></em></p><p><br></p><p>挺有意思的，领了不少的无料，不过是个i人加上去的有点晚，没有同行的老师拿的多，现场人真的超级多，一千多号人真的挺热闹的，正好可以测试S24 Plus的相机性能，我会单独写一篇文章。</p><p>这里是我们在排拿号，不过赌错了，赌成楼上了，直接一个飞奔下楼。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-c3efb907f85e15406fdb1a667db65eae.jpg"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-c3d7a8cd964260784eef20dd49926aa3.jpg"></p><p>抢到了199号，后面哥们抢到了200号，还在B站上撞上了（笑死</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-16aeb43c23f3f50823901e9d7a66ec53.png"></p><p>5点半就进场，就不放照片了，也是一坨人。</p><p>现场的空调超级冷，人快冻麻了，不过后面动起来反而热了，现场照片放几张，其他的自己下吧。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-81604aa65e5c54b109e4eab8f869feaf.jpg"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-b33834a88e96cbd67e465e7ac0467c34.jpg"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-609fa1b1f7664d0eb96763c64609710f.jpg"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-898c546d14073cc1ffca14bf29899bbb.jpg"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-0737eb72ccd4ff4ce4304bebcd5b2e29.jpg"><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-c87b4b094bbe80e6868ae17a10c05305.jpg"></p><p>因为有签售资格，让老师签了to签，很幸运。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/vzQ3QxPnjuW/image-4aeb2059480fa9f6820352b120870ade.jpg"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/live-house-or-chilichill-vzQ3QxPnjuW/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>中秋快乐！ |  收到了一封法国朋友的信</title>
    <guid>pRa6dmrV0Pq</guid>
    <pubDate>Tue, 17 Sep 2024 13:40:13 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>笑死，现在月饼的唯一作用就是送人，吃一个可以，吃第二个确实下不去口，今年吃到好吃的味道是“桃皮巧克力流心”，十分推荐，但只推荐吃一个...</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/pRa6dmrV0Pq/image-52dd55e1f5bbc93b194a71ac4e11fb3a.jpg"></p><p>是之前法国朋友的回信，不过最近挺忙目前没有时间处理这封信，这种写法非常难以阅读，我尽量...哈哈</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/pRa6dmrV0Pq/image-021c5725ccf3ce7117c53c5bbb8ab17b.jpg"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/or-pengyou-pRa6dmrV0Pq/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>Steam云同步失败 | 关联阿里云新加坡火灾</title>
    <guid>dFS6hiKBVzF</guid>
    <pubDate>Sat, 14 Sep 2024 12:49:15 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>症状是同步失败</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/dFS6hiKBVzF/image-f803624901fe6808b0eccf10230fac49.png"></p><p>请求域名steamcloud-sgp.oss-accelerate.aliyuncs.com，阿里云新加坡买没跑了，直接下载云存档也是直接报错，笑死不知道存档还能不能回来。</p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/dFS6hiKBVzF/image-ea2d3c5b5b8db9cfc2c869f279072e8b.png"></p><p><br></p>]]>
    </description>
    <link>https://blog.arklink.org/i/steamor-dFS6hiKBVzF/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
  <item>
    <title>做了个没卵用的小实验 | Wireguard Over HTTP/3</title>
    <guid>Eu5eQcR4Mdv</guid>
    <pubDate>Mon, 09 Sep 2024 09:23:45 GMT</pubDate>
    <itunes:explicit>false</itunes:explicit>
    <description>
      <![CDATA[<p>使用的项目是：<a href="https://github.com/apernet/hysteria" rel="noopener noreferrer" target="_blank">https://github.com/apernet/hysteria</a></p><p>看之前建议恶补一下HTTP/3：<a href="https://en.wikipedia.org/wiki/HTTP/3" rel="noopener noreferrer" target="_blank">https://en.wikipedia.org/wiki/HTTP/3</a></p><p>目的只是测试一下wireguard over quic性能，使用hy2(以下全文使用hy2代替hysteria2)将wireguard的udp封装进quic。</p><p>简单配置一下hy2</p><h3><strong>服务端：</strong></h3><p>官方脚本先一把梭</p><pre class="ql-syntax" spellcheck="false">bash &lt;(curl -fsSL https://get.hy2.sh/)
</pre><p>创建自签证书</p><pre class="ql-syntax" spellcheck="false">openssl req -x509 -nodes -newkey ec:&lt;(openssl ecparam -name prime256v1) -keyout /etc/hysteria/server.key -out /etc/hysteria/server.crt -subj "/CN=bing.com" -days 36500 &amp;&amp; sudo chown hysteria /etc/hysteria/server.key &amp;&amp; sudo chown hysteria /etc/hysteria/server.crt
</pre><p>编辑vim /etc/hysteria/config.yaml</p><pre class="ql-syntax" spellcheck="false">listen: :25829
&nbsp;&nbsp;
tls:
&nbsp;cert: /etc/hysteria/server.crt
&nbsp;key: /etc/hysteria/server.key

auth:
&nbsp;type: password
&nbsp;password: 3P3s1nVbzh6yY8BXspfnFruBmnzVwFcfzpC9vBJ

masquerade:
&nbsp;type: proxy
&nbsp;proxy:
&nbsp;&nbsp;url: https://microsoft.com/
&nbsp;&nbsp;rewriteHost: true
</pre><p>启动服务</p><pre class="ql-syntax" spellcheck="false">systemctl disable hysteria-server
</pre><h3><strong>客户端：</strong></h3><p>下载二进制文件。</p><p><a href="https://v2.hysteria.network/docs/getting-started/Installation/" rel="noopener noreferrer" target="_blank">https://v2.hysteria.network/docs/getting-started/Installation/</a></p><p>创建config.yaml，如果使用ipv6地址进行传输，注意添加[]，ipv6地址的冒号与yaml语法冲突。</p><pre class="ql-syntax" spellcheck="false">server: "[2001:abc::]:25819"

auth: 3P3s1nVbzh6yY8BXspfnFruBmnzVwFcfzpC9vBJ

bandwidth:
&nbsp;up: 50 mbps
&nbsp;down: 300 mbps

udpForwarding: #监听本地51820，转发到目标机器20002端口
&nbsp;- listen: 0.0.0.0:51820
&nbsp;&nbsp;remote: 127.0.0.1:20002
&nbsp;&nbsp;timeout: 20s
</pre><p>wireguard配置就简单了</p><p>参见<a href="https://blog.arklink.org/i/wireguardor-5S4pGQ_kLDE/" rel="noopener noreferrer" target="_blank">https://blog.arklink.org/i/wireguardor-5S4pGQ_kLDE/</a></p><p>记得配置防火墙规则,wg1更改为你的wireguard接口，ens2更改为自己的出口接口。</p><pre class="ql-syntax" spellcheck="false">PostUp = iptables -A FORWARD -i wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens2 -j MASQUERADE;
PostDown = iptables -D FORWARD -i wg1 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens2 -j MASQUERADE;
</pre><h2>最后直接进行一个激情的测速！</h2><p>手机Wireguard连接到一个X86 CHR再markrouting到海外的服务器，笑死你能分清哪一个是走wireguard原生/hy2转发wireguard/原生hy2吗，结果是没啥区别，笑麻了。</p><p>你还别说hy2确实猛，辣鸡欧洲小鸡也能跑出这种带宽。<img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Eu5eQcR4Mdv/image-d43e6b29f441fb75136837cbd778a064.png"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Eu5eQcR4Mdv/image-a650ca426038a91706e65aefef1649bf.png"></p><p><img src="https://media-cdn.arklink.org/blog-arklink-org/production/media/rich-editor/items/Eu5eQcR4Mdv/image-3f76f56f7348afb31b5db5fff149d9ee.jpg"></p>]]>
    </description>
    <link>https://blog.arklink.org/i/or-wireguard-over-http3-Eu5eQcR4Mdv/</link>
    <itunes:episodeType>full</itunes:episodeType>
  </item>
</channel>
</rss>