프로그램에 의한 IP 주소 변경
글쓴이: programmerJ / 작성시간: 수, 2021/03/03 - 10:02오전
Embedded Linux 시스템을 개발하면서 IP 주소 변경 문제를 고민하고 있습니다.
구현하려고 하는 기능은 프로그램을 이용하여 IP를 변경하려고 합니다.
예를 들어 DHCP와 Static IP를 변경하려면
/etc/network/interfaces 파일을 변경해 주는 것으로 알고 있습니다.
이 과정에 다음과 같은 방법을 알고 싶습니다.
1. /etc/network/interfaces의 변경 방법
이 부분은 프로그램을 만들어서 수정을 해야 하는지요?
시스템에서 이파일을 수정할 수 있는 API는 없는지요?
2. root 권한 문제
1번 문제를 수행하려면 root 권한을 가진 프로그램 또는 root login이 필요해 보입니다.
이경우 root 권한을 가진 서버 프로그램을 개발해야 되는지요?
서버에 IP를 DHCP로 해라 또는 Static으로 해라 이렇게 Network으로 명령을 주고
서버 프로그램이 실제로 /etc/network/interfaces를 변경하는 방법을 고려중입니다.
이런 방법보다 더 좋은 방법이 있을까요?
3. hostname 변경
이 부분도 /etc/hostname 파일을 수정해야 부팅해도 적용됩니다.
이러한 경우도 어떻게 해야 할까요?
미리 답변주신 분들께 모두 감사드립니다.
Forums:
1. ip 및 라우팅 명어는 아래 3개만 써도
1. ip 및 라우팅 명어는 아래 3개만 써도 충분합니다.
2. 일반 유저로 root가 실행한느 효과를 보려면 setuid,setgid를 참고하세요.
sudo 명령어로도 가능한지는 확인해보시기 바랍니다.
3. /proc/sys/kernel/hostname 내용을 바꿔주면 리부팅 안해도 바로 적용 됩니다.(단, 로그인은 다시 해야함)
재부팅에도 설정을 유지하러면....
답변 감사합니다.
몇가지 추가 질문이 있어 질문 드립니다.
1. dhcp의 경우에는 상관이 없지만 ifconfig인 경우에는 시스템이 부팅시 마다 해 줘야 하는건지요?
이를 적용하기 위해서는 /etc/network/interface 파일을 수정하는게 아니라, 매번 ifconfig 명령어를 이용하여 변경된 ip를 적용시키는 건가요?
네 매번 ifconfig /ip 명령어로 실행 해줘야
네 매번 ifconfig /ip 명령어로 실행 해줘야 합니다.
/etc/network/interface도 내용이 변경 되거나, 부팅시에 매번 실행 해주는건 마찬가지죠
답변 감사합니다.
한번 해 보겠습니다.
echo "server" > /proc/sys
이거 프로그램으로 쉽게 구현됩니다. 실행할때 root 권한 당연히 필요하고요.
첫번째 쉘로 하는게 시스템 리소스를 훨씬 더 많이 잡아먹습니다.
임베디드라고 하셨으니 저사양으로 최대한 많은 기능 뽑고 싶으신거 같은데 그렇다면 루트 계정만 쓰고, 커널 부팅이 완료되고 처음 실행하는게 /sbin/init 이니 저사양으로 최대한 많은 기능 뽑아내고 싶다면 이 파일을 바꿔치거나 여기서부터 바로 원하는 프로그램 실행하게 만들어야 할겁니다.
데탑이나 서버에 설치되는 배포폰은 /sbin/init부터 시작하는 스크립트가 주단위 이상 분석해야 파악할 수 있을 정도로 복잡해서.
Written By the Black Knight of Destruction
상세한 답변 감사드립니다.
구현 방법은 잘 이해했습니다.
/proc/sys/kernel/hostname을 변경해도 되고 /etc/hostname 파일을 변경해도 되는 것은 이해 했습니다.
프로그램으로 구현도 가능하고요...
이거를 전용 설정 프로그램으로 한다고 하니 고민이 많았던거 같습니다.
최종 구현 방향은 root 권한의 조그마한 서버 프로그램을 만들고
이 서버 프로그램이 /etc/interfaces 파일 또는 /etc/hostname을 직접 수정하는 방향으로 잡았습니다.
다시 한번 상세한 답변 감사드립니다.
댓글 달기