원격 사무실에는 다음과 같은 설정이 있습니다.
--- vlan interface --- Remote Router --tun0--> Main office Firewall --> Active Directory DHCP
저는 이를 사용하여 dhcp3-relay
dhcp 요청(브로드캐스트)을 기본 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를 실행합니다.
인용하다