나는 팔 마이크로 컨트롤러를 사용하고 있습니다. 현재 컨트롤러는 eth0(이더넷 잭)에서 dhcp 클라이언트로 구성되고 eth1에서는 dhcp 서버로 구성됩니다. eth0에서도 dhcp 서비스를 제공하도록 구성하여 라우터에 연결되면 클라이언트가 되고, 랩탑/허브에 연결되면 서버가 되도록 구성하고 싶습니다. 컨트롤러가 서버인지 클라이언트인지 프런트엔드에서 알 수 있기를 원합니다. 나는 Linux 개발을 처음 접했기 때문에 어떻게 해야할지 잘 모르겠습니다.
/etc/udhcpd.conf 파일을 살펴봤지만 거기에 인터페이스 eth0을 추가해야 할지 잘 모르겠습니다. 또한 /etc/networking/interfaces 파일과 udhcpd.service 파일을 살펴봤지만 무엇을 수정해야 할지 모르겠습니다. eth0에서 컨트롤러를 서버나 클라이언트로 구성하는 방법에 대한 지침을 제공해 주실 수 있나요?
자세한 내용은 다음 파일 내용을 참조하세요.
/etc/udhcpd.config
:
start 10.77.0.2
end 10.77.255.200
interface eth1
opt dns 8.8.8.8 8.8.4.4 #public google dns servers
option subnet 255.255.0.0
opt router 10.77.0.1
/etc/network/interfaces
:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
pre-up /bin/grep -v -e "ip=[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /proc/cmdline >
/dev/null
udhcpc_opts -R -b
iface eth1 inet static
address 10.77.0.1
netmask 255.255.0.0
udhcpd.service
:
[Unit]
Description=udhcpd Service
After=startup.service
[Service]
ExecStartPre=/sbin/ifup eth1
ExecStart=/usr/sbin/udhcpd -f -S /etc/udhcpd.conf
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
답변1
내가 아는 한, 단일 udhcpd
네트워크 인터페이스는 한 번에 하나의 네트워크 인터페이스만 제공할 수 있으므로 eth0에서 DHCP도 제공하려면 별도의 구성 파일을 사용하여 두 번째 복사본을 실행해야 합니다. 어쩌면 그렇게 부를 수도 있겠네요 /etc/udhcpd-eth0.conf
.
또한 서로 다른 위치에 두 개의 복사본을 두고 싶을 수도 있습니다 /etc/network/interfaces
. 하나는 "DHCP 클라이언트" 구성용 eth0
이고 다른 하나는 "DHCP 서버" 구성용입니다. /etc/network/interfaces.eth0client
예를 들어 그들을 부르자 /etc/network/interfaces.eth0server
.
다음 질문은 "eth0의 DHCP 서버"를 명시적으로 "eth0의 DHCP 클라이언트"로 다시 전환할 때까지 재부팅 후에도 지속되는 영구 상태로 간주할지, 아니면 "eth0의 DHCP 클라이언트"를 서버로 할지 여부입니다. 요청 시 활성화되고 다음 재부팅 때까지만 지속되는 일시적인 상태로 사용하시겠습니까?
udhcpd-eth0.service
또한 임시 모드를 사용하려면 비활성화(=자동으로 시작되지 않음)해야 하는 별도의 항목을 정의해야 합니다 . 영구 모드를 원할 경우 서버 모드로 전환할 때 활성화하고 시작해야 하며, 클라이언트 모드로 전환할 때 중지하고 비활성화해야 합니다.
모드를 지속적으로 전환하는 스크립트는 다음을 수행해야 합니다(의사코드로):
systemctl stop udhcpd-eth0; systemctl disable udhcpd-eth0
. 여기서 오류를 무시하십시오.달리기
ifdown eth0
.전환하려는 상태에 따라 현재 상태를
/etc/network/interfaces
사용 하거나 재정의합니다./etc/network/interfaces.eth0client
/etc/network/interfaces.eth0server
달리기
ifup eth0
.eth0에서 DHCP 서버 모드로 전환하면
systemctl enable udhcpd-eth0.service && systemctl start udhcpd-eth0.service
완벽한!
/etc/network/interfaces
임시 상태로 만들고 싶다면 파일 사본 두 개가 전혀 필요하지 않을 것입니다. 이 경우 스크립트는 다음과 같습니다.
systemctl stop udhcpd-eth0.service
. 중지되었을 수도 있고 그렇지 않을 수도 있습니다. 여기서는 오류를 무시하세요.ifdown eth0
및ip link set eth0 down
(또는ifconfig eth0 down
이전 도구를 사용하는 경우)을 실행합니다 . 이러한 명령 중 하나 이상이 오류를 보고합니다.DHCP 클라이언트 모드로 전환하면 실행이
ifup eth0
완료됩니다. 그렇지 않은 경우 먼저ip
또는 명령을 사용하여ifconfig
DHCP 서버 모드에서 고정 IP 주소를 구성한eth0
후 를 실행하십시오systemctl start udhcpd-eth0
.완벽한!
"프런트 엔드에서 스위치 스크립트를 호출하는 것은 독자의 연습 문제로 남겨집니다."