dhcp는 L7 프로토콜이다. 운영체제의 네트워크 설정을 위해서 dhcp를 사용하기로 했다면, 운영체가 올라오면서 dhcp client를 실행한다. dhcp client는 dhcp 요청을 해당 서브네트워크에 브로드캐스팅을 한다. 만약 브로드캐스팅 영역에 dhcp 서버가 올라와 있다면, dhcp 서버가 요청을 받아서 응답을 전송할 것이다.
dhcp로 설정할 수 있는 것들은 다음과 같다.
이제 운영체제가 올라오면 dhcp client가 실행 되고, 자신이 속해 있는 subnet에 dhcp 요청을 브로드캐스팅한후 응답을 받아서 그대로 적용하면 그걸로 끝이다. 간단하다.
dhcp의 일차 용도는 관리 네트워크에 접속하려는 노드가 쉽게 네트워크 환경을 설정을 할 수 있도록 도와주기 위함이다. 또 다른 용도는 내부 네트워크 자원을 관리하기 위함이다. 이 경우 할당할 ip range에서 남는 ip를 선택해서 할당하는 방식 대신 MAC을 검사해서 ip를 할당하는 방식을 사용할 것이다. host name도 함께 관리할 것이다.
다른 네트워크 정보는 더 이상 손볼게 없는데 host name(이하 호스트 이름)쪽은 좀 봐야 한다.
기본적으로 호스트 이름은 운영체제 설정을 따르기 때문에, 운영체제의 호스트 이름 설정하는 부분에 대한 수정이 필요하다. /etc/hostname 과 /etc/hosts다.
예를 들어 dhcp server에서 호스트 이름을 node01.yundream.com 으로 설정했다면, 예컨데 설정이 아래와 같다면
네트워크 설정이 적용되는 "타겟 호스트"의 hostname과 hosts를 변경해야 한다. 이건 파일을 수정하는 작업이기 때문에, 각 파일을 수정하는 스크립트를 만들어야 한다. dhcp client는 네트워크 설정이 적용된 후에 실행될 스크립트 파일을 설치할 수 있다.
스크립트의 위치는 /etc/dhcp/dhclient-exit-hooks.d가 되겠다. 나는 아래와 같은 스크립트를 만들었다.
dhcp client가 알아서 /etc/resolv.conf를 수정해주면 편하긴 하지만, 때로 문제가 될 수도 있다. 개발이나 시스템 관리등의 이유로 resolv.conf를 수정해서 사용해야 할 때가 있는데, dhcp client가 재 시작할 때 마다 resolv.conf를 덮어써 버리기 때문이다.
/etc/resolv.conf를 보호하는 방법을 살펴보자.
"-i" 옵션으로 수정가능하게 만들 수 있다.
리눅스 파일시스템에서 지원하는 기능이기 때문에 간단하게 사용할 수 있는데, chef 등에서 사용 할 때 사소한 문제가 있다. 왠일인지 chef에서 bash resource로 chattr을 실행했는데, -i 속성이 먹히지(+i 속성은 먹힌다) 않는다.
Contents
1. dhcp client 설정
1.1. 일반적인 네트워크 설정
1.2. Ubuntu
1.2.1. host name 설정
1.3. CentOS
2. dhcp와 resolv.conf
2.1. dhcp로 부터 dns name server 설정하기
2.2. dns name server 변경을 허용하지 않기
2.2.1. chattr 이용하기
2.2.2. 네트워크 설정 파일 수정
3. 히스토리
1. dhcp client 설정
1.1. 일반적인 네트워크 설정
1.2. Ubuntu
1.2.1. host name 설정
1.3. CentOS
2. dhcp와 resolv.conf
2.1. dhcp로 부터 dns name server 설정하기
2.2. dns name server 변경을 허용하지 않기
2.2.1. chattr 이용하기
2.2.2. 네트워크 설정 파일 수정
3. 히스토리
Recent Posts
Archive Posts
Tags