前言
伪装的好处是家中所有设备均可播放直播,突破机顶盒的物理限制。网上也有很多教程,但主要是用于OpenWRT或爱快,我这里是用的Nixos,实际上任何适用于任何使用systemd-networkd配置网络的发行版。
抓包
需要获得以下3个数据,网上教程很多,我这里就不放过程了(主要是我这是后补的记录,很多过程资料都没留存😅)
| 名称 | 类型 | 示例 |
|---|
| MACAddress | 字符串 | 1a:2b:3c:d4:e5:f6 |
| Hostname | 字符串 | android-xxxx |
| SendOption | 二进制 | |
配置
其在systemd-networkd的配置大概是下面这样的,此处以nix形式展示,需要注意的是,虽然systemd-networkd已经支持SendVendorOption字段,但该字段似乎只能是字符串,对于机顶盒的二进制值无能为力,只好使用SendOption字段替代,且二进制值全部转码。我也是一点点尝试出来的,后面又没在使用,所以忘记了SendVendorOption字段这样使用是否可以。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| {
systemd.network.networks = {
eth1 = {
matchConfig = {
Name = "eth1";
};
networkConfig = {
DHCP = "ipv4";
IPv6AcceptRA = "no";
LinkLocalAddressing = "no";
};
linkConfig = {
MACAddress = "1a:2b:3c:d4:e5:f6";
};
dhcpV4Config = {
RouteMetric = 20;
Hostname = "android-xxxx";
SendOption = "60:string:\\x00\\x00\\x1f\\x1f\\x1f\\x1f\\x1f\\x1f\\xe0\\xe0";
};
};
};
}
|
使用
在OpenWRT中,可以使用udproxy方便的转发,但我在NixOS没有找到类似的软件,最后通过sing-box透明代理实现转发。大概配置如下所示。当使用udp协议访问238.1.78.0/23(安徽地区iptv源地址)时,使用eth1接口出栈。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| {
route = {
rule_set = [
{
tag = "rule_set_iptv";
type = "inline";
rules = [
{
network = [
"udp"
];
ip_cidr = [
"238.1.78.0/23"
];
}
];
}
];
rules = [
{
rule_set = "rule_set_iptv";
outbound = "iptv";
}
];
};
outbounds = [
{
tag = "iptv";
type = "direct";
bind_interface = "eth1";
}
];
}
|