DHCP 패킷은 tun0 인터페이스를 통과하지 않습니다.

DHCP 패킷은 tun0 인터페이스를 통과하지 않습니다.

원격 사무실에는 다음과 같은 설정이 있습니다.

--- vlan interface --- Remote Router --tun0--> Main office Firewall --> Active Directory DHCP

저는 이를 사용하여 dhcp3-relaydhcp 요청(브로드캐스트)을 기본 AD 서버(유니캐스트)로 전달합니다. 문제는 dhcp 요청이 원격 라우터 vlan 인터페이스(브로드캐스트)에 도착하고 라우팅을 통해 AD 서버로 올바르게 전달되어 답변을 제공하지만 패킷을 수신할 때 내부적으로 원격 라우터의 인터페이스 tun0로 전달되지 않는다는 것입니다. vlanXXX요청은 원래 에서 나왔습니다. 이는 tcpdump원격 라우터의 출력입니다.

tun0상호 작용:

tcpdump -i tun0 -nevvv udp port 67 or 68

13:23:45.049995 Out ethertype IPv4 (0x0800), length 592: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 576) IP.VPN.REMOTE.OFFICE.67 > IP.OF.AD.SERVER.67: BOOTP/DHCP, Request from MAC:ADDR:OF:THE:REMOTE:CLIENT, length 548, hops 1, xid 0x2c896edc, secs 11527, Flags [none] (0x0000)
          Gateway-IP IP.OF.NET.GATEWAY
          Client-Ethernet-Address MAC:ADDR:OF:THE:REMOTE:CLIENT [|bootp]

13:23:45.145014  In ethertype IPv4 (0x0800), length 350: (tos 0x0, ttl 125, id 24829, offset 0, flags [none], proto UDP (17), length 334) IP.OF.AD.SERVER.67 > IP.OF.NET.GATEWAY.67: BOOTP/DHCP, Reply, length 306, xid 0x2c896edc, Flags [none] (0x0000)
          Your-IP NEW.LEASE.FROM.AD
          Server-IP IP.OF.AD.SERVER
          Gateway-IP IP.OF.NET.GATEWAY
          Client-Ethernet-Address MAC:ADDR:OF:THE:REMOTE:CLIENT [|bootp]

여기에서 소프트웨어에 의해 패킷이 dhcrelay본사로 올바르게 전달되고 AD가 호스트에 새로운 임대를 제공하는 것을 볼 수 있습니다. 우리는 openvpn(mpls)을 기반으로 하지 않는 다른 링크에서 이 솔루션을 사용하여 원격 사무실에 IP를 할당했습니다.

vlanXXX상호 작용:

tcpdump -i vlanXXX -nevvv udp port 67 or 68

13:21:45.022067 MAC:ADDR:OF:THE:REMOTE:CLIENT > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 590: (tos 0x0, ttl 64, id 147, offset 0, flags [none], proto UDP (17), length 576) 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from MAC:ADDR:OF:THE:REMOTE:CLIENT, length 548, xid 0x496364c3, secs 11407, Flags [none] (0x0000)
          Client-Ethernet-Address MAC:ADDR:OF:THE:REMOTE:CLIENT [|bootp]

tun0우리는 호스트의 브로드캐스트 요청만 볼 수 있지만 도착하여 라우팅되어야 하는 응답은 볼 수 없습니다 vlanXXX.

또한 원격 라우터는 이 프로토콜에 매우 관대합니다.

iptables -A INPUT  -p udp --sport 67:68 --dport 67 -j ACCEPT
iptables -A OUTPUT -p udp --sport 67 --dport 67:68 -j ACCEPT
iptables -A FORWARD -p udp --sport 67:68 --dport 67 -j ACCEPT
iptables -A FORWARD -p udp --sport 67 --dport 67:68 -j ACCEPT

dhcp3-릴레이 프로세스 정보:

hafw:~# ps fax | grep dhc
 5714 pts/0    D+     0:00                      \_ grep dhc
 5087 ?        Ss     0:04 /usr/sbin/dhcrelay3 -i vlanxxx IP.OF.AD.SERVER

기본 할당( /etc/default/dhcp3-relay):

# Defaults for dhcp3-relay initscript
# sourced by /etc/init.d/dhcp3-relay
# installed at /etc/default/dhcp3-relay by the maintainer scripts

#
# This is a POSIX shell fragment
#

# What servers should the DHCP relay forward requests to?
SERVERS="IP.OF.AD.SERVER"

# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
INTERFACES="vlanXXX"

# Additional options that are passed to the DHCP relay daemon?
OPTIONS=""

소프트웨어 버전:

hafw:~# dpkg -l | grep dhcp3-relay
ii  dhcp3-relay                            3.1.1-6+lenny6           DHCP relay daemon

릴레이 구성에서 시도한 작업은 동작을 변경하지 않습니다.

  • -a프록시 확장을 추가 하는 옵션
  • 홉 수를 추가 -c 20하고 기본값(10)에서 20으로 늘립니다. 그럼에도 불구하고 AD에 도달하는 데는 8개의 홉만 있습니다.
  • 인터넷을 향한 인터넷 VLAN 인터페이스를 추가합니다 tun0.vlanYYY
  • INTERFACES=옵션이 없도록 비워 두세요 -i.

내가 뭐 놓친 거 없니?

답변1

이는 유틸리티 자체의 설계 버그처럼 보입니다 dhcrelay. 그것은 단지 듣기만 할 수 있다방송인터페이스이며 OpenVPN은피어 투 피어상호 작용. 이 -i플래그는 이를 변경하지 않습니다(세트에서 선택한 인터페이스 수만 줄입니다).방송상호 작용).

dhcrelay해결책은 게이트웨이 자체가 아닌 원격 LAN 내의 장치에서 실행하는 것 같습니다 . 그런 다음 릴레이된 유니캐스트 트래픽은 OpenVPN 터널을 통해 DHCP 서버로 전달되었다가 다시 돌아옵니다.

이와 같은 작업을 위해 작고 저렴한 서버가 필요하다면 Raspbian(변장한 Debian)을 실행하는 Raspberry Pi를 추천할 수 있습니다. 각 원격 사무실에 있는 한 쌍의 서버에서 DNS를 실행합니다.

인용하다

관련 정보