web-dev-qa-db-ja.com

カスタムルーター経由でlanでウェイクアップ

カスタムルーター経由で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:これを実現するために仮想ブリッジを作成する必要がありますか?

network image UPDATE1:私はフィリップの答えを次のように試しました

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はまだ眠っています... :(

1
jjjkkkjjj

簡単な答え

私はあなたがこれについて間違った方法で行っていると思います。これを実現する簡単な方法は、IPアドレスを割り当てる必要がないことです。 WOLパケットをLANの ブロードキャストアドレス に送信します。ほとんどの場合、これはサブネット内の最後のアドレスです。したがって、LANがサブネットマスク192.168.1.x255.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:これを実現するために仮想ブリッジを作成する必要がありますか?

番号

0
Philip Couling