カスタムルーター経由でwakeonlanを使用したい。下の画像は私のネットワーク画像です。グーグルクラウドプラットフォームとVPN(softether)を使用してスマートフォンからraspi3に接続でき、デスクトップPCの電源がオンになったときにraspi3からデスクトップPCに接続できました。
ただし、デスクトップPCの電源がオフの場合、eth1
にはIPアドレスが割り当てられません。そのため、wake on lanを使用できませんでした(Pythonを使用してデスクトップPCにマジックパケットを送信できませんでした)。これがifconfig
の出力です。
Sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.20 netmask 255.255.254.0 broadcast 172.16.1.255
inet6 fe80::51dd:e5ef:c061:adb9 prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:df:31:9c txqueuelen 1000 (Ethernet)
RX packets 158 bytes 26655 (26.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 168 bytes 42199 (41.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 04:ab:18:3b:af:e2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<Host>
loop txqueuelen 1000 (Local Loopback)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 240 (240.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vpn_vpn_nic: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ebcc:65ba:a7f4:a21e prefixlen 64 scopeid 0x20<link>
inet6 fe80::5cab:14ff:fe17:ae3a prefixlen 64 scopeid 0x20<link>
ether 5e:ab:14:17:ae:3a txqueuelen 1000 (Ethernet)
RX packets 2 bytes 122 (122.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 34 bytes 5198 (5.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether b8:27:eb:8a:64:c9 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
質問1:eth1
に接続しているデバイスの電源がオフになっている場合、eth1
にIPアドレスを割り当てるにはどうすればよいですか?
質問2:これを実現するために仮想ブリッジを作成する必要がありますか?
Sudo arp -s 192.168.1.19 **:**:**:**:**:**
ただし、出力は
SIOCADDRT: Network is unreachable
確立されたネットワークはこれを引き起こしませんでしたか? 192.168.1.0を作成する必要がありますか?
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
追加した後
ip route add 192.168.1.0/24 dev eth1
/etc/dhcpcd.exit-hook
では、Sudo arp -s 192.168.1.19 **:**:**:**:**:**
を渡すことができます。しかし、PCはまだ眠っています... :(
私はあなたがこれについて間違った方法で行っていると思います。これを実現する簡単な方法は、IPアドレスを割り当てる必要がないことです。 WOLパケットをLANの ブロードキャストアドレス に送信します。ほとんどの場合、これはサブネット内の最後のアドレスです。したがって、LANがサブネットマスク192.168.1.x
で255.255.255.0
上にある場合、ブロードキャストアドレスは192.168.1.255
になります。
これは、LAN上のすべてのマシン(少なくとも同じサブネット上のすべてのマシン)に送信されます。これは問題ではありません! WOL " magic packet "には、ウェイクアップするマシンのMACアドレスが含まれている必要があります。したがって、ネットワーク上の他のすべてのマシンがパケットを受信し、それを無視します。
イーサネットでは、LANパケットは常にIPアドレスではなくハードウェア(MAC)アドレスに送信されます。マシンA192.168.1.2
がマシンB192.168.1.3
にメッセージを送信しようとすると、 [〜#〜] arp [〜#〜] を使用して192.168.1.3
に関連付けられたMACアドレスを検索し、そのMACアドレスにメッセージを送信します。 。
通常、ARPは、「192.168.1.3
は誰ですか」というAブロードキャストと、「それは私です」と応答するマシンBによって機能します。しかし、マシンBがオフになっていると、マシンBは応答できず、自分のIPアドレスすら知りません。したがって、ARPはマシンBがオフになっていると機能しません。
幸い、Linuxでは、IPアドレスに関連付けられたMACアドレスを静的に設定し、ARPをまとめてバイパスすることができます。あなたの場合、あなたはあなたのr-piカスタムルーターでそれをするでしょう:
Sudo arp -s <ip address> <PC's mac address>
例えば:
Sudo arp -s 192.168.1.3 00:0a:29:10:24:af
これで、ルーター(およびルーターのみ)は、スイッチをオンにせずに192.168.1.3
と通信する方法を認識しました。そのマシンにWOLがセットアップされていて、正しく接続されている限り、WOLパケットをPCのIPアドレスにアドレス指定できます。
これが機能するためには、192.168.1.3
が他のマシンによって使用されないことを確認する必要があります。 PCが常にこのIPアドレスを持っていることを確認すると便利です。そうしないと、非常に混乱します。
質問1:eth1に接続しているデバイスの電源がオフになっている場合、どうすればeth1にIPアドレスを割り当てることができますか?
話したいマシンでSudo arp -s <ip address> <mac address>
を使用します。
質問2:これを実現するために仮想ブリッジを作成する必要がありますか?
番号