Skip to content

Instantly share code, notes, and snippets.

@Youngv
Created April 5, 2025 08:11
Show Gist options
  • Save Youngv/a2f74c0185e9a7eb6d54e9d48ef8fdb1 to your computer and use it in GitHub Desktop.
Save Youngv/a2f74c0185e9a7eb6d54e9d48ef8fdb1 to your computer and use it in GitHub Desktop.
OpenWrt 连接飞猫 U20 之后局域网设备流量分流设置

下面是设置和复原网络规则的完整命令集合。你可以直接按照以下步骤运行每条命令,快速实现配置和清理。


设置规则

以下命令将指定设备 192.168.1.6 的流量通过 USB 网口 eth4 (网关 192.168.88.1) 出网。

1. 创建 USB 路由表

将路由表名称 usb_route 写入 /etc/iproute2/rt_tables 文件:

echo "200 usb_route" >> /etc/iproute2/rt_tables

2. 添加路由规则

为路由表 usb_route 添加默认路由:

ip route add default via 192.168.88.1 dev eth4 table usb_route

设置特定设备 192.168.1.6 使用 usb_route 路由表:

ip rule add from 192.168.1.6 lookup usb_route

3. 设置 NAT 转发

为 USB 网口 eth4 设置 NAT 规则,伪装流量:

iptables -t nat -A POSTROUTING -s 192.168.1.6 -o eth4 -j MASQUERADE

4. 验证配置

运行以下命令验证规则是否设置成功:

检查路由规则:

ip rule show

输出中应包含:

<规则序号>:   from 192.168.1.6 lookup usb_route

检查 usb_route 路由表:

ip route show table usb_route

输出中应包含:

default via 192.168.88.1 dev eth4

检查 NAT 规则:

iptables -t nat -L POSTROUTING

输出中应包含类似以下内容:

MASQUERADE  all  --  192.168.1.6  anywhere   eth4

复原规则

以下命令将删除所有之前配置的路由规则和 NAT 转发设置,恢复系统默认状态。

1. 删除路由规则

删除流量来源 192.168.1.6 的路由规则:

ip rule del from 192.168.1.6 lookup usb_route

2. 删除 usb_route 路由表的内容

清空 usb_route 路由表中所有规则:

ip route flush table usb_route

3. 删除 NAT 转发规则

清除针对 192.168.1.6 的 NAT 转发规则:

iptables -t nat -D POSTROUTING -s 192.168.1.6 -o eth4 -j MASQUERADE

如果之前添加了多个 NAT 规则,可以逐条查看并删除:

显示 NAT 规则:

iptables -t nat -L POSTROUTING --line-numbers

删除指定编号的规则:

假设要删除第 x 条规则,运行:

iptables -t nat -D POSTROUTING x

4. 检查清理结果

运行以下命令验证是否成功清理规则:

检查路由规则:

ip rule show

确认没有与 192.168.1.6 相关的规则。

检查路由表:

ip route show table usb_route

确认 usb_route 路由表为空。

检查 NAT 规则:

iptables -t nat -L POSTROUTING

确认没有与 192.168.1.6 相关的 NAT 转发配置。


设置和复原概览

快速设置:

echo "200 usb_route" >> /etc/iproute2/rt_tables
ip route add default via 192.168.88.1 dev eth4 table usb_route
ip rule add from 192.168.1.6 lookup usb_route
iptables -t nat -A POSTROUTING -s 192.168.1.6 -o eth4 -j MASQUERADE

快速复原:

ip rule del from 192.168.1.6 lookup usb_route
ip route flush table usb_route
iptables -t nat -D POSTROUTING -s 192.168.1.6 -o eth4 -j MASQUERADE

持久化选项

如果需要持久化配置(使规则在重启后依然有效),可以将设置命令添加到 /etc/rc.local 文件:

设置规则写入 /etc/rc.local

# 添加 USB 路由规则
ip route add default via 192.168.88.1 dev eth4 table usb_route
ip rule add from 192.168.1.6 lookup usb_route
iptables -t nat -A POSTROUTING -s 192.168.1.6 -o eth4 -j MASQUERADE

保存文件后,下一次重启规则会自动加载。

如无需持久化,也可以选择不编辑 /etc/rc.local


通过这些命令,你可以轻松实现网络规则的设置和复原,同时保持系统的可控性和灵活性!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment