이 답변에 따르면 ...
https://unix.stackexchange.com/a/457577/61742
/etc/dhclient.conf
... 다음 구성을 넣거나 보관하여 DHCP 클라이언트의 DHCP 서버에서 푸시 라우팅을 사용할 수 있습니다 .../etc/dhcp3/dhclient.conf
option classless-static-routes code 121 = array of { ip-address, ip-address };
그런데 CentOS 7에는 이 파일이 존재하지 않는데, 다음 파일들이...
[root@localhost ~]# ps -eaf | grep dhcli
root 780 650 0 15:02 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s8.pid -lf /var/lib/NetworkManager/dhclient-00cb8299-feb9-55b6-a378-3fdc720e0bc6-enp0s8.lease -cf /var/lib/NetworkManager/dhclient-enp0s8.conf enp0s8
root 783 650 0 15:02 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s17.pid -lf /var/lib/NetworkManager/dhclient-8512e951-6012-c639-73b1-5b4d7b469f7f-enp0s17.lease -cf /var/lib/NetworkManager/dhclient-enp0s17.conf enp0s17
root 2218 1152 0 15:36 pts/0 00:00:00 grep --color=auto dhcli
/var/lib/NetworkManager/dhclient-enp0s8.conf
참고: "-cf" 매개변수(파일: 및 ) 의 값을 참고하세요 /var/lib/NetworkManager/dhclient-enp0s17.conf
.
내 질문은 다음과 같습니다CentOS 7 DHCP 클라이언트에서 "Classless Static Route"(코드 121)를 사용하는 올바른 방법은 무엇입니까?
감사해요!
추가하다:
이것은 내 ISC KEA DHCP(DHCPv4) 구성입니다...
cat /usr/local/etc/kea/kea-dhcp4.conf
[...]
"option-def": [{
"name": "rfc3442-classless-static-routes",
"code": 121,
"space": "dhcp4",
"type": "record",
"record-types": "uint8,uint8,uint8,ipv4-address"
}
],
"option-data": [{
"name": "rfc3442-classless-static-routes",
"data": "10,1,4, 10.1.6.4"
}]
[...]
목표는 DHCP 클라이언트에서 10.1.4.0/24에 대한 요청을 IP 10.1.6.4/32로 라우팅하는 것입니다.
ip route add 10.1.4.0/24 dev enp0s8 via 10.1.6.4
참고: 모든 DHCP 클라이언트에서 이 명령을 사용하면 동일한 결과를 얻습니다.
답변1
뻔뻔한 표절이 답변에서:
DHCP를 통해 이 작업을 수행하려면 RedHat 기술 자료 문서에 따라 DHCP 클라이언트를 올바르게 구성했는지 확인하세요.여기 있어요
NetworkManager를 사용할 때 DHCP 서버에서 제공하는 RFC3442 표준 클래스 없는 정적 경로를 올바르게 처리하려면 다음 줄을
/etc/dhclient.conf
또는(인터페이스별 DHCP 옵션을 사용하는 경우) 에 배치해야 합니다/etc/dhclient-<ifname>.conf
.option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; option ms-classless-static-routes code 249 = array of unsigned integer 8; also request rfc3442-classless-static-routes; also request ms-classless-static-routes;
이 줄은 RFC3442 클래스 없는 정적 경로가 DHCP 서버에서 요청되고 NetworkManager가 이를 올바르게 처리하는지 확인합니다.
답변2
실제로 이 답변은 @Isaac의 답변에 추가되었으며 질문에 대한 몇 가지 문제가 있습니다. 이는 약간 명백해 보일 수 있지만 나에게는 그렇지 않습니다.
첫째, 제시된 우주에는 몇 가지 패턴이 있지만 DHCP 서버에 구성된 것과 DHCP 클라이언트에서 예상되는 것 간의 상관 관계를 이해하는 것이 필요합니다. 실제로 "option-def"->"name"과 같은 매개변수는 "rfc3442-classless-static-routes"와 "classless-static-routes", "option-def"->"record-types" 사이에서 변경될 수 있습니다. "rfc3442-classless-static-routes" 사이. uint8, uint8, uint8, ipv4-address" 및 "uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8" 등... 즉, DHCP 클라이언트가 "상대방"에서 무엇을 기대하는지에 따라 달라집니다. "기본적으로 우월해요.
CentOS 7의 경우 스레드에서 지적한 내용https://unix.stackexchange.com/a/459963/61742기본적으로 이미 구성되어 있으면 CentOS 7이 ISC KEA DHCP(DHCPv4)(필자의 경우)의 "다른 쪽 끝"에서 기다리고 있는 것을 구성하면 됩니다.
마지막으로 구성은 이렇습니다..
cat /usr/local/etc/kea/kea-dhcp4.conf
[...]
"option-def": [{
"name": "rfc3442-classless-static-routes",
"code": 121,
"space": "dhcp4",
"type": "record",
"array": true,
"record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8"
}
],
"option-data": [{
"name": "rfc3442-classless-static-routes",
"data": "24,10,1,4,10,1,6,4"
}]
[...]
...CentOS 7이 다음과 같이 구성되었으므로...
cat /var/lib/NetworkManager/dhclient-enp0s8.conf
[...]
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
also request rfc3442-classless-static-routes;
[...]
몇 가지 설명:
"record-types"는 마스크입니다. 즉, CentOS 7에서 예상한 대로 "부호 없는 정수 8의 배열"(uint8)인 "date"에 알림된 배열의 각 위치에 있는 내용입니다.
"data"는 다음 예에 따라 작동합니다. 다음 경로를 원하면 10.1.4.0/24 via 10.1.6.4
에 알립니다 . 3옥텟(/24) 마스크이므로 "24,10,1,4,10,1,6,4"
0은 생략해야 합니다 .10.1.4.0/24
힌트:"option-data" 매개변수는 라우팅 구성을 배포하려는 방법에 따라 "subnet4"(파일 "/usr/local/etc/kea/kea-dhcp4.conf")의 여러 위치에 배치될 수 있습니다.
@Isaac, @Rui F Ribeiro 및 @AB에게 특별히 감사드립니다!