원하는 행동
응용 프로그램이 글로벌 브로드 캐스트 IP 주소로 패킷을 보낼 때 모든 인터페이스 255.255.255.255
에서 패킷을 이더넷 글로벌 브로드 캐스트 주소 ( ff:ff:ff:ff:ff:ff
) 로 보내려고합니다 .
Linux 및 아마도 다른 OS에서도 이것이 작동하는 것 같습니다. Windows XP와 Windows 7은 이것에 대해 다른 동작을 나타내며, 내 상황에는 바람직하지 않습니다.
Windows XP 동작
패킷이 첫 번째 네트워크 인터페이스로 올바르게 전송됩니다 (인터페이스 순서는 "네트워크 연결 / 고급 / 고급 설정"에 지정되어 있습니다). 또한 다른 인터페이스로 전송됩니다.
지금까지 모든 것이 옳습니다. 문제는 다른 인터페이스로 전송할 때 브로드 캐스트 패킷의 소스 주소가 첫 번째 인터페이스의 IP 주소라는 것입니다. 예를 들어,이 네트워크 구성을 상상해보십시오 (순서가 중요 함).
- 어댑터 1 : IP 주소
192.168.0.1
- 어댑터 2 : IP 주소
10.0.0.1
- 어댑터 3 : IP 주소
172.17.0.1
이제 브로드 캐스트 패킷을 보내면 다음 패킷이 전송됩니다 (소스 및 대상 IP 주소와 함께).
- 어댑터 1에서 :
192.168.0.1
=>255.255.255.255
- 어댑터 2의 경우 :
192.168.0.1
=>255.255.255.255
어댑터 3에서 :
192.168.0.1
=>255.255.255.255
실제로 브로드 캐스트 패킷을 사용하는 응용 프로그램은 어댑터 1 이외의 다른 인터페이스에서는 작동하지 않습니다. 제 생각에 이것은 Windows XP의 TCP / IP 스택에서 명백한 버그입니다.
Windows 7 동작
네트워크 인터페이스 순서를 수정해도 Windows 7에는 영향을 미치지 않는 것 같습니다. 대신 브로드 캐스트는 IP 라우팅 테이블에 의해 제어되는 것 같습니다.
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.202.254.254 10.202.1.2 286
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.3 10
10.202.0.0 255.255.0.0 On-link 10.202.1.2 286
10.202.1.2 255.255.255.255 On-link 10.202.1.2 286
10.202.255.255 255.255.255.255 On-link 10.202.1.2 286
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
192.168.0.0 255.255.255.0 On-link 192.168.0.3 266
192.168.0.3 255.255.255.255 On-link 192.168.0.3 266
192.168.0.255 255.255.255.255 On-link 192.168.0.3 266
224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
224.0.0.0 240.0.0.0 On-link 192.168.0.3 266
224.0.0.0 240.0.0.0 On-link 10.202.1.2 286
255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
255.255.255.255 255.255.255.255 On-link 192.168.0.3 266
255.255.255.255 255.255.255.255 On-link 10.202.1.2 286
===========================================================================
참고 항목 255.255.255.255
경로를? 그렇습니다. 브로드 캐스트 패킷을 제어합니다. 이 경우 브로드 캐스트 패킷은 192.168.0.3
메트릭이 낮지 만 다른 인터페이스에는 전달되지 않기 때문에 를 통해 전송됩니다 .
글로벌 브로드 캐스트 패킷이 매우 쉽게 전송되는 인터페이스를 변경할 수 있습니다 ( 255.255.255.255
낮은 메트릭 으로 지속적인 경로 추가 ). 그러나 아무리 노력해도 브로드 캐스트 패킷은 하나의 인터페이스 에서만 전송되며, 원하는 패킷은 아닙니다 .
결론
- Windows 7은 브로드 캐스트 패킷을 하나의 인터페이스로만 보냅니다. 당신은 어느 것을 선택할 수 있지만, 그것은 요점이 아닙니다.
- Windows XP는 브로드 캐스트 패킷을 모든 인터페이스로 보내지 만 실제로는 Windows 7 동작과 같은 하나의 인터페이스로만 보냅니다.
목표
이 글로벌 IP 브로드 캐스트 지원을 Windows (바람직하게는 Windows 7)에서 한 번에 변경하고 싶습니다. 물론 더 좋은 방법은 일종의 지원되는 구성 변경 (레지스트리 해킹 또는 이와 유사한 것)을 갖는 것이지만 모든 제안에 개방적입니다.
어떤 아이디어?