logo NodeSeekbeta

Po0 食用方法之Nftables 转发

购买链接 https://console.po0.com/store/tencent-can-bgp
其链路为腾讯 BGP 入口-》 RFC 不过墙
但也需要RFC 任意 HK 或 Jp 的机器作为落地(CO T1 均可) SG 需要使用HK拉
该款产品特点在于内网传输,不过强,且BGP入口没有跨网担忧,适合想要省心稳稳用的用户
因为国内机器有极强的限制 不能放 web 服务 不能使用Reality 等类TLS 协议 更不能安装哆啦等转发面板!
强烈建议大家使用Nft 走内核转发即可
接下来开始食用教程 此教程适用于Po0 转发 CO 转发 T1 等任意转发场景
首先安装必要依赖

apt update
apt install -y nftables
systemctl enable --now nftables

然后编辑/etc/nftables.conf,下面给出一键修改命令,只需要替换参数为你的,执行命令即可
落地IP 换成你的 RFC 机器 IP 即可
花括号内的端口 1 端口 2 换成 Po0 入站的端口 如果只有 1 个就不用加逗号了 留一个数字就行(理解为数组)
iifname那如果你不只有一个端口就加一行 如果只有一个端口就只保留一行 参数替换即可
入站端口和目标端口建议一致
网卡一般来说都是eth0 不用修改 如果你不确定可以使用ip addr 查看公网对应网卡是否为eth0

cat <<'EOF' > /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset

define DST_IP  = 落地IP
define WAN_IF  = "eth0"

# ====== MSS clamp:降低 PMTU/MSS 引发的重传/小包放大(对“落地爆CPU”很关键)======
# 保守 MSS=1360,优先求稳;如果你确认整条路径 MTU=1500 且无隧道,可逐步调到 1400/1420
table inet mangle {
  chain forward {
    type filter hook forward priority -150; policy accept;
    ip daddr $DST_IP tcp dport { 端口1, 端口2 } tcp flags syn tcp option maxseg size set 1360
  }
}

# ====== NAT ======
table ip nat {
  set dst_ports {
    type inet_service;
    elements = { 端口1, 端口2 }
  }

  chain prerouting {
    type nat hook prerouting priority -100; policy accept;

    # 只处理公网口进来的新连接
    iifname $WAN_IF tcp dport 端口1   ct state new dnat to $DST_IP:目标端口1 
    iifname $WAN_IF tcp dport 端口2 ct state new dnat to $DST_IP:目标端口2
  }

  chain postrouting {
    type nat hook postrouting priority 100; policy accept;

    # 仅对“被 DNAT 的连接”做 masquerade,避免误伤本机直连 DST_IP
    ct status dnat ip daddr $DST_IP tcp dport @dst_ports masquerade
  }
}

# ====== 转发过滤 ======
table inet filter {
  chain forward {
    type filter hook forward priority 0; policy drop;

    ct state invalid drop
    ct state established,related accept

    # 仅放行被 DNAT 的新建连接
    ct status dnat ip daddr $DST_IP tcp dport { 端口1, 端口2 } ct state new accept
  }
}
EOF

然后调整sysctl 开启转发允许 同样直接执行命令即可

cat <<'EOF' > /etc/sysctl.d/99-nft-forward.conf
# IPv4 转发
net.ipv4.ip_forward = 1

# 更积极的 MTU 探测:转发链路常见“吞吐抖动/重传放大”时很有帮助
net.ipv4.tcp_mtu_probing = 1

# conntrack:保持你当前值
net.netfilter.nf_conntrack_max = 32768
net.netfilter.nf_conntrack_buckets = 8192
EOF

这边贴一份我用的

#!/usr/sbin/nft -f
flush ruleset

define DST_IP  = 198.1.1.1
define WAN_IF  = "eth0"

# ====== MSS clamp:降低 PMTU/MSS 引发的重传/小包放大(对“落地爆CPU”很关键)======
# 保守 MSS=1360,优先求稳;如果你确认整条路径 MTU=1500 且无隧道,可逐步调到 1400/1420
table inet mangle {
  chain forward {
    type filter hook forward priority -150; policy accept;
    ip daddr $DST_IP tcp dport { 57559 } tcp flags syn tcp option maxseg size set 1360
  }
}

# ====== NAT ======
table ip nat {
  set dst_ports {
    type inet_service;
    elements = { 57559 }
  }

  chain prerouting {
    type nat hook prerouting priority -100; policy accept;

    # 只处理公网口进来的新连接
    iifname $WAN_IF tcp dport 57559   ct state new dnat to $DST_IP:57559
  }

  chain postrouting {
    type nat hook postrouting priority 100; policy accept;

    # 仅对“被 DNAT 的连接”做 masquerade,避免误伤本机直连
    ct status dnat ip daddr $DST_IP tcp dport @dst_ports masquerade
  }
}

# ====== 转发过滤 ======
table inet filter {
  chain forward {
    type filter hook forward priority 0; policy drop;

    ct state invalid drop
    ct state established,related accept

    # 仅放行被 DNAT 的新建连接
    ct status dnat ip daddr $DST_IP tcp dport { 57559 } ct state new accept
  }
}

最后执行以下命令应用

sysctl --system
nft -f /etc/nftables.conf

到此端口转发就完成了 你只需要在落地机上搭建对应端口的服务即可
管控严格,大家千万不要搭建http,tls 类协议,直接搭建ss2022就是最好用滴
最后,顶尖~

12
  • 好文绑定

  • 好文,帮顶 xhj003

  • xhj003

  • 好文谢谢大佬教会我小白入门,才发现你的链接都没aff。

  • 好文帮顶

  • xhj001 Reality + 备案域名不可以转发吗,之前有段时间我的SS2022一直被通报,换了Reality+备案域名后好多了

  • @Tiancaizhi #6 ccn不过墙 不能用TLS类协议 反而用了TLS类会通报 删鸡不退款

  • @Flyinsky #7 我之前用的Hep的夏港IPLC和GGY的IX 入口大厂的几家都有,SS2022除了阿里全被通报了,不知道啥情况,大家还都说和协议无关 xhj001

  • 好文学习了

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72144位seeker

🎉欢迎新用户🎉