isc-dhcp-server가 /etc/network/interfaces와 충돌함 - 동일한 서브넷과 일치하는 여러 인스턴스

isc-dhcp-server가 /etc/network/interfaces와 충돌함 - 동일한 서브넷과 일치하는 여러 인스턴스

Raspbian을 실행 중이고 cmd를 실행하려고 합니다.isc-dhcp-server 서비스가 시작됩니다.. 그러면 메시지가 반환됩니다.

[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed!

내 거/var/sys/로그파일에 다음이 포함됨

dhcpd: Wrote 0 leases to leases file.
dhcpd: Multiple interfaces match the same subnet: wlan0 eth0
dhcpd: Multiple interfaces match the same shared network: wlan0 eth0
dhcpd:
dhcpd: No subnet declaration for wlan1 (no IPv4 addresses).
dhcpd: ** Ignoring requests on wlan1.  If this is not what
dhcpd:    you want, please write a subnet declaration
dhcpd:    in your dhcpd.conf file for the network segment
dhcpd:    to which interface wlan1 is attached. **
dhcpd:
dhcpd:
dhcpd: Not configured to listen on any interfaces!

내 거/etc/네트워크/인터페이스포함하다

auto lo
iface lo inet loopback


iface wlan1 inet static
        address 192.168.42.1
        netmask 255.255.255.0


iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1

allow-hotplug wlan0

iface wlan0 inet static
        address 192.168.1.200
        netmask 255.255.255.0
        gateway 192.168.1.1

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

up iptables-restore < /etc/iptables.ipv4.nat

오류 로그 분석

여러 인터페이스가 동일한 서브넷과 일치함: wlan0 eth0

서브넷이 다음으로 표시되어 있습니까?주소내부에 -/etc/네트워크/인터페이스문서? 만일이 경우라면,이더넷 0가지다주소 192.168.1.100그리고무선랜 0가지다주소 192.168.1.200. 이것들은 다릅니다.

또한. 내가 다시 정리할 때/etc/네트워크/인터페이스다음과 같이 블록을 파일로 정리하고 정렬합니다.

auto lo
iface lo inet loopback

iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1

allow-hotplug wlan0

iface wlan0 inet static
        address 192.168.1.200
        netmask 255.255.255.0
        gateway 192.168.1.1

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

iface wlan1 inet static
        address 192.168.42.1
        netmask 255.255.255.0

up iptables-restore < /etc/iptables.ipv4.nat

내 실수변수/시스템/로그파일이 다음으로 변경됩니다.

dhcpd: Wrote 0 leases to leases file.
dhcpd: No subnet declaration for wlan1 (no IPv4 addresses).
dhcpd: ** Ignoring requests on wlan1.  If this is not what
...

이 파일 정렬로 인해 이전 **dhcpd: 동일한 서브넷: wlan0 eth0**과 일치하는 여러 인터페이스가 사라진 이유는 무엇입니까? 동일한 서브넷과 일치하면 선언 여부와 상관없이 항상 일치해야 합니다. 그렇죠?

답변1

eth0wlan0동일한 서브넷/네트워크 주소를 가집니다 .

인터페이스 의 서브넷 주소(네트워크 주소라고도 함)를 eth0입력합니다 . "주소"와 "넷마스크"의 "논리적 AND"에 의해 결정됩니다. "주소"는 , "넷마스크"는 입니다 .192.168.1192.168.1.0192.168.1.100255.255.255.0

십진수 표기법에서 숫자 위치의 값은... 10000,1000,100,10,1입니다.

이진 표기법에서 값은... 128, 64, 32, 16, 8, 4, 2, 1입니다.

                           128 64 32 16 8 4 2 1 
 Since 192=128+64  it is     1  1  0  0 0 0 0 0  or 11000000  in binary.
 Since 168=128+32+8 it is    1  0  1  0 1 0 0 0  or 10101000  in binary.
 Since 1=1  it is            0  0  0  0 0 0 0 1  or 00000001  in binary.
 Since 100=64+32+4  it is    0  1  1  0 0 1 0 0  or 01100100  in binary.
 Since 200=128+64+8 it is    1  1  0  0 1 0 0 0  or 11001000  in binary.
 255=128+64+32+16+8+4+2+1 or 1  1  1  1 1 1 1 1  or 11111111  in binary.

서브넷이나 네트워크 주소를 찾으려면 "주소"와 "넷마스크"의 "논리적 AND"를 수행해야 합니다. 0과 0 = 0, 1과 0 = 0, 0과 1 = 0, 마지막으로 1과 1 = 1의 논리 AND입니다. 따라서 192.168.1.100 논리 AND 255.255.255.0는 다음과 같습니다.

                  11000000.10101000.00000001.01100100
 "logical and"    11111111.11111111.11111111.00000000  gives
                  11000000.10101000.00000001.00000000 which equals
                       192.     168.       1.       0  or 192.168.1.0 

또한 192.168.1.200 논리적 255.255.255.0이고

                  11000000.10101000.00000001.11001000
 "logical and"    11111111.11111111.11111111.00000000  gives
                  11000000.10101000.00000001.00000000 which equals
                       192.     168.       1.       0  or 192.168.1.0 

따라서 두 서브넷 모두 동일한 주소를 가지므로 동일한 서브넷입니다.

해결 방법은 또는 192.168.1.200로 변경하는 것 입니다 .192.168.2.200192.168.1.100192.168.2.100

관련 예시는 다음을 참조하세요.DHCP 서버: 다양한 인터페이스에 대해 서로 다른 서브넷 주소를 제공합니다.

관련 정보