私のカスタムルーターを介してWake On Lanを使用したいと思います。下の写真は私のウェブイメージです。 GoogleクラウドプラットフォームとSoftether(VPN)を使用して、スマートフォンからraspi3に接続し、raspi3からデスクトップコンピュータに接続できます。デスクトップコンピュータの電源が入っているとき。
ただし、デスクトップPCの電源を切ってもeth1
IPアドレスは割り当てられません。したがって、Wake on LANは使用できません(Pythonを使用してデスクトップコンピュータにマジックパケットを送信することはできません)。これが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
eth1
Q1:eth1
デバイス接続が閉じたときにIPアドレスを割り当てる方法は?
Q2:これを達成するために仮想ブリッジを作成する必要がありますか?
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 **:**:**:**:**:**
。しかし、コンピュータはまだまだスリープ状態です... :(
ベストアンサー1
簡単な答え
私はあなたがこれにアプローチする方法が間違っていると思います。これを行う簡単な方法は、IPアドレスを割り当てる必要がないことです。 WOLパケットをLANに送信する放送アドレス。これはほぼ常にサブネットの最後のアドレスです。したがって、LANが192.168.1.x
サブネットマスクを使用している場合、255.255.255.0
ブロードキャストアドレスは192.168.1.255
。
これは、LAN上のすべてのコンピュータ(少なくとも同じサブネット上のすべてのコンピュータ)に送信されます。それは重要ではありません!壁"魔法のバッグ「起動するコンピュータのMACアドレスを含める必要があります。したがって、ネットワーク内の他のすべてのコンピュータはパケットを受信して無視します。
複雑な答え
イーサネットLANでは、パケットは次のようになります。いつもIPアドレスの代わりにハードウェア(MAC)アドレスに送信されます。 A マシンが192.168.1.2
B マシンにメッセージを送信しよう192.168.1.3
とすると、マシン A は以下を使用します。ARP接続されたMacアドレスを見つけて、192.168.1.3
そのMacアドレスにメッセージを送信します。
通常、ARPがどのように機能するかは、システムAが「誰であるか192.168.1.3
」をブロードキャストし、システムBが「私です」と応答することです。ただし、マシンBがシャットダウンすると、マシンBは応答しなくなり、独自のIPアドレスもわかりません。したがって、マシンBがシャットダウンするとARPは機能しません。
幸い、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アドレスがあることを確認すると便利です。そうしないと、状況が非常に複雑になる可能性があります。
Q1:eth1に接続されているデバイスがダウンしたときにeth1にIPアドレスを割り当てる方法は?
sudo arp -s <ip address> <mac address>
会話したい端末で使用してください。
Q2:これを達成するために仮想ブリッジを作成する必要がありますか?
いいえ