>  기사  >  백엔드 개발  >  Go의 원시 소켓이 사용자 정의 소스 IP로 DHCP 검색을 수정할 수 있습니까?

Go의 원시 소켓이 사용자 정의 소스 IP로 DHCP 검색을 수정할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-29 02:31:02448검색

 Can Go's Raw Sockets Modify DHCP Discoveries with Custom Source IPs?

Go에서 원시 소켓 사용: DHCP 검색 전달

GIADDR을 기반으로 하는 사용자 정의 소스 IP 주소로 DHCP 검색을 수정하려는 시도 필드에서 개발자는 로컬로 구성되지 않은 IP 주소를 사용하는 데 어려움을 겪었습니다. 이런 질문이 생깁니다.

원시 소켓을 사용해서만 이를 달성할 수 있습니까?

답변:

소스 수정 IP 주소에는 보안 고려 사항으로 인해 특정 기능이 필요합니다. 이러한 제한을 극복하기 위해 원시 소켓을 활용할 수 있습니다.

Go의 원시 소켓 라이브러리:

Go의 표준 Net 라이브러리는 원시 소켓 지원을 제공하지 않지만 go.net은 하위 저장소는 ipv4 및 ipv6 패키지를 모두 제공합니다. ipv4 패키지, 특히 NewRawConn 기능이 이 시나리오에 적합합니다.

패킷 조작:

패킷 헤더를 읽고 수정하려면 ipv4.RawConn의 ReadFrom 메소드 채용될 수 있습니다. 추출된 필드와 GIADDR 로직을 사용하여 WriteTo 호출을 시작하기 전에 헤더를 업데이트해야 합니다.

예:

<code class="go">for {
  hdr, payload, _, err := conn.ReadFrom(buf)
  if err != nil { ... }
  hdr.ID = 0
  hdr.Checksum = 0
  hdr.Src = ...
  hdr.Dst = ...
  if err := conn.WriteTo(hdr, payload, nil); err != nil { ... }
}</code>

이 접근 방식을 사용하면 소스 IP 주소를 수정할 수 있습니다. DHCP 패킷의 특정 조건에 따라 달라집니다.

위 내용은 Go의 원시 소켓이 사용자 정의 소스 IP로 DHCP 검색을 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.