간단한 대답

간단한 대답

내 맞춤 라우터를 통해 Wake On Lan을 사용하고 싶습니다. 아래 사진은 제 웹 이미지입니다. Google 클라우드 플랫폼과 VPN(softether)을 사용하여 스마트폰에서 raspi3에 연결하고 raspi3에서 데스크톱 컴퓨터로 연결할 수 있습니다.데스크탑 컴퓨터가 켜져 있을 때.

단, 데스크탑 PC의 전원을 끄면 eth1IP 주소가 할당되지 않습니다. 그래서 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질문 1: eth1장치 연결이 닫힐 때 IP 주소를 할당하는 방법은 무엇입니까?

질문 2: 이를 달성하려면 가상 브리지를 만들어야 합니까?

웹 이미지 업데이트 1: 다음과 같이 Philip의 답변을 시도했습니다.

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.2B 머신으로 메시지를 보내려고 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 주소가 있는지 확인하는 것이 도움이 됩니다. 그렇지 않으면 상황이 매우 복잡해질 수 있습니다.


질문 1: eth1에 연결된 장치가 다운되었을 때 eth1에 IP 주소를 할당하는 방법은 무엇입니까?

sudo arp -s <ip address> <mac address>대화하려는 기기에서 사용하세요.

질문 2: 이를 달성하려면 가상 브리지를 만들어야 합니까?

아니요

관련 정보