Debian 13 软路由部署说明

光猫后可直接连接软路由,也可保留原来的上级路由器;完成上网、三台电脑抓包和 PRO 部署。

只按本文顺序操作:确认两个网口 → 配置软路由 → 设置下级路由器桥接 → 固定三台电脑 IP → 上传 7 个文件 → 安装 → 填写三个房间 → 检查结果。
1认准网口
2配置网络
3设置桥接
4上传安装
5填写房间
6检查结果

开始前全部确认

任何一项不满足都先不要开始。本文会替换 Debian 现有的网络和防火墙配置,只适用于专用软路由。

1找到软路由 IP,再用 MobaXterm 连接

1.1 在软路由旁操作一次

这一步先这样接:光猫 LAN 口 → Debian 软路由的 WAN 网口。除此之外,软路由只接电源、显示器和键盘;软路由的另一个网口先保持空着,电脑和下级路由器都不要接到软路由上。
  1. 给软路由接上显示器和键盘。
  2. 把光猫 LAN 口,或原路由器 LAN 口,接到软路由准备作为 WAN 口 的网口。
  3. 软路由另一个网口先不要接线。
  4. 开机,使用 root 登录 Debian。
  5. 看到命令行开头为 root@ 后,执行下面的命令:
ip -4 -br address

命令会显示类似下面的内容:

lo        UNKNOWN  127.0.0.1/8
enp1s0   UP       192.168.1.123/24
enp2s0   DOWN

如果除了 127.0.0.1 以外没有其他 IP,先检查网线和光猫或上级路由器的 DHCP,出现 192.168.x.x 或 10.x.x.x 地址后再继续。

1.2 连接 Windows 电脑

现在再接 Windows 电脑:电脑要接在与 Debian WAN 口相同的光猫(或相同的原路由器)上,可以使用另一个 LAN 口或 Wi-Fi。此时仍然不要把电脑接到 Debian 软路由的 LAN 口。

如果 Debian WAN 口接在光猫上:

光猫LAN 口
Windows 电脑光猫另一个 LAN 口
或 Wi-Fi
→
Debian 软路由WAN 口

如果 Debian WAN 口接在原来的路由器上:

光猫LAN 口
→
原来的路由器WAN 口接光猫
LAN 口接 Debian
Windows 电脑原路由器另一个 LAN 口
或 Wi-Fi
→
Debian 软路由WAN 口

不要把 Debian WAN 口接在光猫上,同时把 Windows 电脑接在路由器上。两边可能不是同一个网段,MobaXterm 将无法连接。

第一次连接时,Windows 电脑不要接 Debian 的 LAN 口。等第 3 步配置完成后,才使用 Debian LAN 口和固定地址 192.168.50.1。

1.3 在 Windows 电脑打开 MobaXterm

  1. 确认 Windows 电脑与 Debian WAN 口连接在同一台光猫或同一台路由器上。
  2. 打开 MobaXterm,点击左上角 Session。
  3. 点击 SSH。
  4. Remote host 填刚才看到的软路由 IP,例如 192.168.1.123。
  5. 勾选 Specify username,填写 root。
  6. Port 保持 22,点击 OK。
  7. 输入 Debian 安装时已经设置好的 root 密码。

看到命令行开头为 root@ 后,保持这个 MobaXterm 窗口打开,再继续下面的步骤。

下面示例把 enp1s0 当作 WAN 口,把 enp2s0 当作 LAN 口。你的名称不一样时,只修改第 3 步命令最上面的两行。

2选择一种接线方式

接法 A:光猫直接接 Debian 软路由

光猫LAN 口
→
Debian 13 软路由WAN 口接光猫
LAN 口接下级路由器
→
下级路由器AP/桥接模式
→
电脑 1~3有线或 Wi-Fi

接法 A 中,光猫必须已经负责拨号、路由和 DHCP。如果光猫是桥接模式,或宽带需要在路由器上填写 PPPoE 账号,请使用接法 B,不要把 Debian 直接到光猫。

接法 B:光猫和 Debian 之间保留原来的路由器

光猫接原路由器 WAN 口
→
原来的上级路由器正常路由模式
LAN 口开启 DHCP
→
Debian 13 软路由WAN 口接上级路由器 LAN
LAN 口接下级路由器
→
下级路由器AP/桥接模式
→
电脑 1~3有线或 Wi-Fi

使用接法 B 时,原来的上级路由器保持正常上网设置,并保持 DHCP 开启。它的 LAN 地址建议使用 192.168.1.1,Debian WAN 口会自动从它获取地址。

上级路由器的 LAN 网段不能是 192.168.50.x。下级路由器不要使用“路由模式”,不要开启自己的 DHCP。

3一次配置好 Debian 网络

本节适用于专用双网口软路由。会接管两个网口,停用 NetworkManager、networking 和 dhcpcd,替换原有防火墙规则。已有 Docker、VPN、端口转发或其他联网网卡的机器,不要直接套用。WAN 自动获取 IP,LAN 固定为 192.168.50.1;本文只配置 IPv4 上网。

先通过 MobaXterm 保存脚本,再到软路由显示器前执行。切换网络时 SSH 可能断开,本机执行不会因此中断。

  1. 在 MobaXterm 输入 nano /root/setup-network.sh,按回车。
  2. 把下面黑色框里的全部内容复制进去。
  3. 把 WAN_IF=enp1s0 和 LAN_IF=enp2s0 改成自己的两个网口名称。
  4. 按 Ctrl+O、回车保存,再按 Ctrl+X 退出。此时不要在 MobaXterm 中运行脚本。
  5. 到软路由显示器前,以 root 登录,执行 bash /root/setup-network.sh。
  6. 等待完成。若出现报错,留在本机排查,不要直接进入下一步。

需要粘贴到 nano 中的完整脚本如下:

#!/bin/bash
set -euo pipefail
export LC_ALL=C
trap 'echo "配置未完成,请在本机查看上面的错误,不要继续下一步。"' ERR
WAN_IF=enp1s0
LAN_IF=enp2s0

if [[ $EUID -ne 0 || -n "${SSH_CONNECTION:-}" ]]; then
  echo '请在软路由本机显示器前,以 root 登录后运行。'
  exit 1
fi
[[ "$WAN_IF" != "$LAN_IF" ]]
ip link show dev "$WAN_IF"
ip link show dev "$LAN_IF"

# 检查可能优先匹配的旧配置;允许重新执行本脚本。
shopt -s nullglob
for config in /etc/systemd/network/*.network /run/systemd/network/*.network /usr/lib/systemd/network/*.network; do
  name=${config##*/}
  if [[ "$config" == /etc/systemd/network/10-wan.network || "$config" == /etc/systemd/network/20-lan.network ]]; then
    if grep -Eq '^# Managed by (NICAER|PRO) soft-router guide$' "$config"; then
      continue
    fi
  fi
  if [[ "$name" < 20-lan.network || "$name" == 20-lan.network ]]; then
    echo "请先核对可能抢先匹配网口的旧配置:$config"
    exit 1
  fi
done

BACKUP_DIR=$(mktemp -d /root/network-backup.XXXXXX)
for config in /etc/network /etc/systemd/network /etc/nftables.conf /etc/dnsmasq.conf /etc/dnsmasq.d /etc/resolv.conf /etc/sysctl.d/99-soft-router.conf; do
  if [[ -e "$config" || -L "$config" ]]; then
    cp -a --parents "$config" "$BACKUP_DIR/"
  fi
done
nft list ruleset >"$BACKUP_DIR/ruleset.nft" 2>/dev/null || true
echo "原配置备份:$BACKUP_DIR"

apt-get update
apt-get install -y nftables dnsmasq systemd-resolved

mkdir -p /etc/systemd/network
cat >/etc/systemd/network/10-wan.network <<EOF
# Managed by PRO soft-router guide
[Match]
Name=$WAN_IF

[Network]
DHCP=ipv4
IPv6AcceptRA=no
LinkLocalAddressing=no
EOF

cat >/etc/systemd/network/20-lan.network <<EOF
# Managed by PRO soft-router guide
[Match]
Name=$LAN_IF

[Network]
Address=192.168.50.1/24
ConfigureWithoutCarrier=yes
IPv6AcceptRA=no
LinkLocalAddressing=no
EOF

cat >/etc/sysctl.d/99-soft-router.conf <<'EOF'
net.ipv4.ip_forward = 1
EOF

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

table inet filter {
  chain input {
    type filter hook input priority filter; policy drop;
    iifname "lo" accept
    ct state established,related accept
    iifname "$LAN_IF" accept
    iifname "$WAN_IF" udp sport 67 udp dport 68 accept
    ip protocol icmp accept
  }

  chain forward {
    type filter hook forward priority filter; policy drop;
    iifname "$LAN_IF" oifname "$WAN_IF" accept
    iifname "$WAN_IF" oifname "$LAN_IF" ct state established,related accept
  }

  chain output {
    type filter hook output priority filter; policy accept;
  }
}

table ip nat {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    oifname "$WAN_IF" ip saddr 192.168.50.0/24 masquerade
  }
}
EOF

cat >/etc/dnsmasq.d/soft-router.conf <<EOF
interface=$LAN_IF
except-interface=lo
bind-dynamic
dhcp-range=192.168.50.150,192.168.50.240,255.255.255.0,12h
dhcp-option=3,192.168.50.1
dhcp-option=6,192.168.50.1
domain-needed
bogus-priv
no-resolv
server=223.5.5.5
EOF

nft -c -f /etc/nftables.conf
dnsmasq --test

systemctl disable --now NetworkManager.service 2>/dev/null || true
systemctl disable --now networking.service 2>/dev/null || true
systemctl disable --now dhcpcd.service 2>/dev/null || true
pkill dhcpcd 2>/dev/null || true

# 清除 LAN 口原有的 169.254.x.x、多余地址和错误默认路由
ip route del default dev "$LAN_IF" 2>/dev/null || true
ip -4 address flush dev "$LAN_IF"

systemctl enable systemd-networkd.service systemd-resolved.service
systemctl restart systemd-networkd.service systemd-resolved.service
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# 等待 LAN 地址生效;此时 LAN 网线可以尚未接入。
for attempt in {1..30}; do
  if ip -4 address show dev "$LAN_IF" | grep -q 'inet 192.168.50.1/24'; then
    break
  fi
  sleep 1
done
ip -4 address show dev "$LAN_IF" | grep -q 'inet 192.168.50.1/24'
sysctl --system
systemctl enable --now nftables.service
systemctl restart nftables.service
systemctl enable --now dnsmasq.service
systemctl restart dnsmasq.service

ip -br address
ip route
nft list ruleset
# WAN 获取地址可能需要一些时间。
for attempt in {1..30}; do
  if ip -4 route show default dev "$WAN_IF" | grep -q '^default'; then
    break
  fi
  sleep 1
done
ip -4 route show default dev "$WAN_IF" | grep -q '^default'
ping -c 4 223.5.5.5
getent ahostsv4 deb.debian.org
echo '网络配置完成;请把 Windows 电脑接到 LAN 口继续。'

最后应看到 WAN 口已经从光猫或上级路由器取得 IP,LAN 口为 192.168.50.1/24,并且 ping 有回复,然后继续下一步。

检查结果中,LAN 口只能有 192.168.50.1/24,不能再出现 169.254.x.x;ip route 中只能由 WAN 口提供 default via 默认路由。

如果脚本报错:不要重启,不要拔掉显示器和键盘。先拍下完整错误和屏幕上显示的“原配置备份”目录。如果是 WAN_IF/LAN_IF 填错,执行 ip -br link 重新确认网口,修改脚本最上面两行后,仍在本机重新执行 bash /root/setup-network.sh。其他错误不要自行删除配置,把错误照片和备份目录发给技术人员。

本机脚本完成后,重新连接 MobaXterm

  1. 把 Windows 电脑的网线直接接到 Debian 的 LAN 口。
  2. 关闭电脑 Wi-Fi,把有线网卡 IPv4 和 DNS 都设为自动获取。
  3. 等待 20 秒。
  4. 在 MobaXterm 新建 SSH 连接。
  5. Remote host 固定填写 192.168.50.1,用户名填写 root,端口填写 22。
  6. 输入 root 密码登录。

本配置下,软路由的 LAN 管理 IP 固定为 192.168.50.1。WAN 地址仍然自动获取。

接法 A:光猫负责拨号,并给 Debian WAN 口自动分配 IP。接法 B:原来的上级路由器负责上网,并给 Debian WAN 口自动分配 IP。后面的配置完全相同。

4设置下级路由器为桥接模式

4.1 先单独连接下级路由器

  1. 暂时拔掉下级路由器上的其他网线,只保留下级路由器的电源。
  2. 使用一根网线,把 Windows 电脑接到下级路由器任意一个 LAN 口。不要接 WAN 口。
  3. 如果使用笔记本电脑,先关闭笔记本 Wi-Fi,只保留这根网线。
  4. 把 Windows 网卡的 IPv4 设置为“自动获得 IP 地址”和“自动获得 DNS”。
  5. 等待 20 秒,然后按 Win+R,输入 cmd,按回车。
  6. 在黑色命令窗口执行:
ipconfig

找到“以太网适配器”下面的“默认网关”,常见地址是 192.168.1.1、192.168.0.1 或 192.168.31.1。

  1. 打开浏览器,在地址栏输入默认网关,例如 http://192.168.1.1,按回车。
  2. 输入下级路由器的管理账号和密码。默认管理地址、账号和密码通常印在路由器底部标签上。

4.2 修改下级路由器设置

  1. 找到“工作模式”“上网模式”或“系统设置”。
  2. 如果有 AP 模式或有线中继模式,选择并保存;“桥接模式”只有明确支持网线上联时才选,不要选择无线桥接。若保存后重启或管理地址改变,按路由器提示重新进入管理页面,再继续。
  3. 找到“LAN 设置”“局域网设置”或“内网设置”。
  4. 按照下表填写:
设置项填写内容
路由器 LAN IP/管理 IP192.168.50.2
子网掩码255.255.255.0
默认网关192.168.50.1
DNS192.168.50.1
  1. 找到“DHCP 服务器”“地址自动分配”或“局域网 DHCP”,选择 关闭。
  2. 设置好需要使用的 Wi-Fi 名称和 Wi-Fi 密码。
  3. 点击“保存”“应用”或“重启”。管理页面断开属于正常情况。
如果路由器没有 AP/桥接模式:不用选择工作模式,只修改 LAN IP、关闭 DHCP,并在下一步使用 LAN 口连接即可。

4.3 按最终方式接线

  1. 关闭下级路由器电源。
  2. 从 Debian 的 LAN 口 接一根网线到下级路由器的 LAN 口。
  3. 下级路由器的普通 WAN 口保持空着。如果 AP 模式页面明确要求使用 WAN 口作为上联口,才按页面要求接 WAN 口。
  4. 打开下级路由器电源,等待 1 分钟。
  5. Windows 电脑连接下级路由器的 LAN 口或 Wi-Fi,并保持 IPv4 为自动获取。
  6. 在 Windows 命令提示符执行:
ipconfig
ping 192.168.50.1
ping 192.168.50.2
ping 223.5.5.5

Windows 的 IPv4 地址应为 192.168.50.150 到 192.168.50.240 之间的一个地址,默认网关应为 192.168.50.1,三个 ping 都应收到回复。

下级路由器的 WAN 路由、NAT、DHCP 都不要使用。所有电脑和软路由必须处于同一个 192.168.50.x 网段。

给三台需要抓包的电脑固定 IP

  1. 在 Windows 按 Win+R,输入 ncpa.cpl,按回车。
  2. 右键当前正在使用的“以太网”,点击“属性”。如果电脑通过 Wi-Fi 玩游,则右键当前使用的 Wi-Fi 网卡。
  3. 双击“Internet 协议版本 4 (TCP/IPv4)”,选择“使用下面的 IP 地址”和“使用下面的 DNS 服务器地址”。
  4. 按下表填写,点击“确定”,再点击“关闭”。
设备IP 地址子网掩码网关DNS
一号机192.168.50.101255.255.255.0192.168.50.1192.168.50.1
二号机192.168.50.102255.255.255.0192.168.50.1192.168.50.1
三号机192.168.50.103255.255.255.0192.168.50.1192.168.50.1

每台电脑设置后,都打开命令提示符执行:

ping 192.168.50.1
ping 223.5.5.5
nslookup deb.debian.org 192.168.50.1

两个地址都有回复、域名能解析出地址,再用浏览器打开网页确认上网正常。

5上传 7 个文件并安装

先在 MobaXterm 的 SSH 窗口执行:

mkdir -p /root/PRO
  1. 在 MobaXterm 左侧的 SFTP 文件面板中,打开 /root/PRO。
  2. 点击左侧工具栏的上传按钮,或把文件直接拖入该面板。
  3. 等待所有进度完成,不要在上传中途执行安装命令。

必须把下面 7 个文件全部上传到这个目录:

setup.sh PRO-Web-linux-amd64.tar.zst PRO-Web-linux-amd64.tar.zst.sha256 PRO-Models.tar.zst PRO-Models.tar.zst.sha256 PRO-Sender-linux-amd64.tar.zst PRO-Sender-linux-amd64.tar.zst.sha256

上传后执行:

cd /root/PRO
ls -lh

对照上面的列表,确认 7 个文件名完全相同,并且没有文件大小为 0。缺少文件时不要继续,请重新获取完整安装包。

上传完成后,使用 root 执行:

cd /root/PRO
bash setup.sh install

安装完成时,屏幕会显示 Web 管理后台密码。立即把这个密码保存下来。

systemctl status relink-radar.service --no-pager

看到 active (running) 后,在同一局域网电脑的浏览器打开:

http://192.168.50.1:9876/admin
  1. 使用刚才保存的管理后台密码登录。
  2. 点击“添加授权码”,为一号机、二号机、三号机各创建一个授权码。
  3. 需要使用 3D 地图时,把三个授权码的 3D 权限全部打开。
  4. 复制并保存这三个授权码,下一步要填写。

6填写三个抓包房间

执行下面命令打开 Sender 配置:

nano /opt/radar/.env

删除原内容,按下面格式填写。把三个 RELINK-授权码 换成管理后台创建的三个授权码,把 PRO-授权码 换成提供给当前客户的产品授权码:

RADAR_INTERFACE=enp2s0

RADAR_ROOM_1=一号机|192.168.50.101|ws://192.168.50.1:9876/ws/provider|一号机的RELINK-授权码|
RADAR_ROOM_2=二号机|192.168.50.102|ws://192.168.50.1:9876/ws/provider|二号机的RELINK-授权码|
RADAR_ROOM_3=三号机|192.168.50.103|ws://192.168.50.1:9876/ws/provider|三号机的RELINK-授权码|

PRO_LICENSE_KEY=PRO-授权码

RELINK_POSITION_TTL=0

从旧版升级时,先从 /etc/nftables.conf 移除手动添加的 65010/TCP REDIRECT 行,再用 nft -a list chain ip nat prerouting 找到该规则,通过 nft delete rule ip nat prerouting handle <handle> 删除运行中的旧规则。不要清空整个防火墙。如果运行期间重载防火墙清空了动态表,需要重启 Sender 恢复托管规则。已有代理 TCP 连接需要重连。

在 nano 中按 Ctrl+O,按回车保存,再按 Ctrl+X 退出。然后执行:

chmod 600 /opt/radar/.env
systemctl enable --now pro-3d-sender.service
systemctl restart pro-3d-sender.service

7最后检查

先执行 reboot 重启软路由。等待启动完成,再通过 LAN 地址 192.168.50.1 重新连接 MobaXterm,执行:

ip -4 -br address
ip route
systemctl is-active systemd-networkd systemd-resolved nftables dnsmasq relink-radar.service pro-3d-sender.service
systemctl is-enabled NetworkManager networking dhcpcd
getent ahostsv4 deb.debian.org
nft list table ip pro_lobby
journalctl -u pro-3d-sender.service -n 100 --no-pager

LAN 地址应仍为 192.168.50.1/24,默认路由走 WAN;六个服务均应为 active。三个旧网络服务应为 disabled、masked 或不存在,不能为 enabled。域名应能解析出 IPv4 地址。nftables 输出中应能看到 tcp dport 65010 redirect to :16510。Sender 日志中应能看到一号机、二号机、三号机对应的房间信息。

  1. 在三台电脑上确认都能上网。
  2. 在浏览器打开 http://192.168.50.1:9876/。
  3. 使用日志中显示的房间码进入对应房间。
  4. 让对应电脑启动游戏,确认各房间分别收到自己的数据并正常绘制。

以上四项全部正常,部署完成。

检查不通过时

任何一项不正常都不要反复重装。执行下面命令,把完整输出和报错截图发给技术人员:

systemctl --failed --no-pager
systemctl status relink-radar.service pro-3d-sender.service --no-pager -l
journalctl -u relink-radar.service -u pro-3d-sender.service -b -n 200 --no-pager
ss -lntp | grep -E ':(9876|16510)\b' || true
nft list ruleset
ip -4 -br address
ip route