Linux 如何将 wol 包从指定网卡发出 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zeroze
V2EX    Linux

Linux 如何将 wol 从指定网卡发出

  •  
  •   zeroze 2019-04-27 09:36:54 +08:00 via iPhone 5939 次点击
    这是一个创建于 2363 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求问大神
    Linux 下现有 wlan0 和 eth0
    eth0 另一侧连接了支持 wol 的电脑
    wlan 可以接受外网信息
    现在想做到 wlan0 接受信号后
    从 eth0 向另一端发送 wol 包
    但似乎使用 wakeonlan 只从 wlan0 走,不从 eth0 走
    请问怎么指定让 wol 包走 eth0 不走 wlan0 啊

    21 条回复    2019-04-27 21:31:16 +08:00
    Foxkeh
        1
    Foxkeh  
       2019-04-27 09:53:05 +08:00 via iPhone   1
    手动配路由表试试?小弟我没实验条件瞎猜的
    zeroze
        2
    zeroze  
    OP
       2019-04-27 09:58:35 +08:00 via iPhone
    @Foxkeh 是不是 iptable 特定 ip 的就转发啊
    yanaraika
        3
    yanaraika  
       2019-04-27 10:01:54 +08:00   1
    sendto 有一个 sockaddr*参数,用在 sock_raw 上传一个 sockaddr_ll 进去,里面可以指定 ifindex。ifindex 见 netdevice(7)
    yzwduck
        4
    yzwduck  
       2019-04-27 10:05:48 +08:00   1
    看你用的 etherwake/wol/... 命令的文档,应该会有一个参数来指定 interface。
    和路由表没关系,因为 wol 包是广播。
    julyclyde
        5
    julyclyde  
       2019-04-27 10:09:06 +08:00
    @yzwduck 不是因为广播吧,是因为二层
    zeroze
        6
    zeroze  
    OP
       2019-04-27 10:15:49 +08:00 via iPhone div class="sep5">
    是不是直接从底层发包也行啊
    zeroze
        7
    zeroze  
    OP
       2019-04-27 10:16:34 +08:00 via iPhone
    绑定 socket 自己构建魔术包
    hiplon
        8
    hiplon  
       2019-04-27 10:32:19 +08:00   1
    ether-wake -i eth0 AA:11:22:11:22:33
    zeroze
        9
    zeroze  
    OP
       2019-04-27 11:03:25 +08:00 via iPhone
    @hiplon 无效啊不知道为什么。。。
    hiplon
        10
    hiplon  
       2019-04-27 11:07:37 +08:00   1
    @zeroze 那你可以试试用 eth0 其它主机 tcpdump 一下看看能不能收到报文
    zeroze
        11
    zeroze  
    OP
       2019-04-27 11:18:54 +08:00 via iPhone
    @hiplon tcpdump 收到了,另外补充下我想唤醒的是 osx,发包的是 pi
    ICKelin
        12
    ICKelin  
       2019-04-27 11:35:13 +08:00   1
    用路由或者策略路由
    ip ro add default dev eth0 table 1234
    ip rule add from all fwmark 1234 table 1234
    iptables -t mangle -i wlan0 -j MARK --set-mark 1234
    不过你具体环境还不是很懂。
    zeroze
        13
    zeroze  
    OP
       2019-04-27 11:39:54 +08:00 via iPhone
    就是想 wol 我的 macmini2018,似乎只连 wifi 无法唤醒,所以我想用 pi 有线醒,这样之后打个洞还可远程唤醒,但不是很成功。。。
    zeroze
        14
    zeroze  
    OP
       2019-04-27 11:41:31 +08:00 via iPhone
    mini 和 pi 都连了 wifi
    yzwduck
        15
    yzwduck  
       2019-04-27 11:42:55 +08:00
    @julyclyde 谢谢提醒…被你这么一说,我就开始怀疑为什么我能用三层网络代理唤醒内网设备了。查了一下发现 wol 可以是二层的 Ethernet magic packet,也可以是三层 UDP 的 Magic Packet。
    https://wiki.wireshark.org/WakeOnLAN
    kkxxxxxxx
        16
    kkxxxxxxx  
       2019-04-27 12:13:28 +08:00
    mac 不支持关机唤醒、只能可以休眠唤醒
    BOYPT
        17
    BOYPT  
       2019-04-27 12:23:42 +08:00
    ether-wake 和 wakeonlan 命令都有个-i 参数指定从哪个网卡发包的。

    我有个小项目也完成楼主那样的功能:
    https://github.com/boypt/wolwaker
    mritd
        18
    mritd  
       2019-04-27 12:30:41 +08:00
    我也有啊,我也自己造轮子啊 https://github.com/mritd/wol

    ysc3839
        19
    ysc3839  
       2019-04-27 19:07:01 +08:00 via Android   1
    @yzwduck WOL 是收到的包中包含指定数据就会唤醒,不会去识别几层,你发三层的包无非是前面多了一些三层的数据。
    julyclyde
        20
    julyclyde  
       2019-04-27 20:51:45 +08:00
    @yzwduck UDP 的目标只能是个 proxy 吧,然后 proxy 转手变成二层包?
    yzwduck
        21
    yzwduck  
       2019-04-27 21:31:16 +08:00
    @julyclyde 没有转成二层包… wol 可以通过发一个封装成 UDP 的 Magic Packet 来唤醒(或者说是包含 Magic Packet 的任意数据包)。
    在我的场景中,proxy 只是转发 UDP 广播而已。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5457 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:02 PVG 16:02 LAX 01:02 JFK 04:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86