그래서 WOL 스크립트를 살펴보았는데 라우터 외부의 컴퓨터에서 연결을 시도할 때 제대로 작동하는 것 같습니다.
내가 사용하는 스크립트: http://www.dd-wrt.com/wiki/index.php/Useful_Scripts#Web_Server_Wake-up
이제 내가 보는 문제는 내가 집에 있을 때 원래 컴퓨터와 서버가 동일한 서브넷에 있고 라우터가 요청을 기록하지 않기 때문에 WOL 스크립트가 쓸모가 없다는 것입니다.
네트워크 내의 두 컴퓨터 간에 라우터 로그 요청을 보낼 수 있는 방법이 있습니까? 나는 네트워크 구조에 대해 잘 모르지만 이것이 가능한지 모르겠습니다. 어떻게든 라우터를 통해 모든 트래픽을 프록시해야 합니까?
여기서 설명하고 싶은 것은 다음과 같습니다.
내 홈 서버는 SMB, AFP, HTTP 및 기타 몇 가지 웹 애플리케이션을 제공합니다. 서버에 액세스하지 않는 동안 서버를 절전 모드로 전환하고 싶습니다. 따라서 네트워크 외부에서 HTTP 액세스가 요청되면 서버가 깨어나도록 하고 싶습니다. 로컬 서브넷의 컴퓨터가 SMB 공유를 요청하면 서버가 깨어나도록 하고 싶습니다.
참고할 사항: 저는 Ubuntu 서버를 가지고 있습니다. 로컬 네트워크의 모든 컴퓨터는 라우터에 직접 연결됩니다. 일부 시스템이 연결된 허브가 있지만 모든 트래픽은 라우터를 통과해야 합니다.
편집: 그냥 아이디어가 있었어요. 관련 서버를 별도의 VLAN에 배치하고 라우터를 통해 VLAN 간의 통신을 허용하면 어떻게 되나요? 그런 다음 트래픽은 트래픽을 기록할 수 있는 방화벽을 통과해야 합니다. 그러한 시스템을 설정하는 방법을 아는 사람이 있습니까?
답변1
매우 간단한 방법은 wol
라우터에서 수동으로 호출하는 것입니다. 패킷이 수신될 때 이 작업을 수행할 수 있지만 WoL 패킷이 전송되는 시간과 대상 컴퓨터가 이를 처리할 준비가 되는 시간 사이에 큰 지연이 있기 때문에 실제로는 잘 작동하지 않을 수 있습니다. 대상 컴퓨터가 깨어나기 전에 애플리케이션이 시간 초과될 가능성이 높습니다.
Linux 패킷 필터는 대상을 통해 사용자 공간으로 패킷을 전달할 수 QUEUE
있으며 이러한 패킷에 반응하는 프로그램을 작성할 수 있습니다.netfilter_queue 라이브러리. WoL 패킷을 보내거나 다른 프로그램(예: )을 실행하는 프로그램이 존재하는지는 모르지만 /usr/sbin/wol
작성하는 것이 그리 어렵지는 않습니다. 언제 이 작업을 수행해야 하는지 아는 것은 또 다른 문제입니다. 절전 모드를 해제해야 하는 컴퓨터에서 패킷을 수신할 때마다 이 모든 작업을 수행하고 싶지는 않습니다.
나는 사용자가 WoL 패킷을 보내기 위해 몇 가지 수동 작업을 수행하도록 하는 것을 선호합니다. 간단한 접근 방식은 라우터에 전용 사용자를 두고, 스크립트 호출을 /usr/sbin/wol
셸로 사용하고, 권한 있는 사용자에게 SSH 키를 제공하는 것입니다. 더 간단한 접근 방식은 라우터에서 웹 서버를 실행하는 것입니다. 이는 CGI 스크립트를 실행할 수 있는 매우 간단한 서버일 수 있으며 /usr/sbin/wol
사용자가 페이지를 방문하고 허용된 자격 증명을 제공할 때 이를 실행합니다.
답변2
로컬에서 깨우려면 /usr/sbin/wol만 실행해야 합니다. 실행 중인 OS가 무엇인지 및/또는 OS가 이를 지원하는지 확실하지 않습니다. 그러나 서버에 액세스하기 전에 이 명령을 실행해야 합니다. 그래서 자동으로 되지는 않습니다.
어떻게든 라우터를 통해 모든 트래픽을 프록시해야 합니까?
음, 자동화하는 한 가지 방법이 있습니다. 반드시 이 작업을 수행해야 하는 경우 모든 LAN 요청이 라우터를 오가도록 DHCP 넷마스크를 255.255.255.255로 설정하십시오. 그러나 이는 매우 비효율적이다. 넷마스크를 255.255.255.255로 설정하면 각 컴퓨터는 자신이 자체 네트워크에 있다고 생각하게 되며 자신 이외의 장치로 전송된 모든 패킷은 게이트웨이(라우터)를 통과해야 합니다.
답변3
이 문제는 문제가 있는 서버를 사설 VLAN으로 옮긴 다음 특정 포트에서 실행되는 특정 iptable 규칙을 사용하여 해당 서버와 나머지 네트워크 간의 트래픽을 로깅함으로써 해결되었습니다.
프로젝트가 끝나면 내 사이트에 전체 기사를 게시한 다음 이 답변을 업데이트하겠습니다.