IP 주소 추가에 CIDR을 지정하는 이유는 무엇입니까?

IP 주소 추가에 CIDR을 지정하는 이유는 무엇입니까?

네트워크 인터페이스에 대해 주소 할당을 실행할 때 ip addr add인터페이스의 서브넷을 지정해야 합니다(또는 지정할 수 있습니다). 따라서 ifconfig를 실행하면 서브넷을 볼 수 있습니다.

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::f36f:407:e015:2633  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:73:e9:14  txqueuelen 1000  (Ethernet)
        RX packets 105172  bytes 120417336 (120.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27040  bytes 4403397 (4.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

이것이 왜 필요한지 이해가 안 되나요? 라우팅 테이블이 라우팅 목적이기 때문에 라우팅 목적이 아니라고 생각합니다. 그렇다면 그 용도는 무엇입니까?

편집: 더 명확하게 말하자면: 넷마스크는 네트워크에 직접 연결된 주소 범위, 즉 라우팅 없이 도달할 수 있는 주소 범위를 아는 데 사용된다는 것을 이해합니다. 그러나 이것은 라우팅 테이블에 설정되어 있습니다. 그래서 제 질문은: 인터페이스 설정과 라우팅 테이블 사이의 관계는 무엇입니까?

직접 연결되지 않은 것 같습니다. 다음을 참조하세요.

root@yoav-VirtualBox:/home/yoav# ip addr add 192.168.1.2/24 dev first
root@yoav-VirtualBox:/home/yoav# ip addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: second@first: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether a2:a9:4f:c3:c5:be brd ff:ff:ff:ff:ff:ff
3: first@second: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether f2:38:32:ea:b4:8f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 scope global first
       valid_lft forever preferred_lft forever
root@yoav-VirtualBox:/home/yoav# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
root@yoav-VirtualBox:/home/yoav# 

답변1

Linux에서는 인터페이스에 주소를 할당하면절대적인이 주소를 기반으로 한 LAN 라우팅입니다. 경로는 주소에 할당된 CIDR 마스크를 사용합니다(그리고 주소 자체를 힌트 소스 주소로 사용합니다).

# ip link set eth0 down
# ip address flush dev eth0
# ip address add 192.0.2.3/24 dev eth0
# ip route

(아무것도 없음: 라우팅을 위해서는 인터페이스가 UP 상태여야 함)

# ip link set eth0 up
# ip route
192.0.2.0/24 dev eth0 proto kernel scope link src 192.0.2.3 

주소를 삭제하면 참조된 주소나 해당 주소로 정의된 네트워크가 부족하여 존재할 수 없는 경로가 항상 삭제됩니다.

# ip address flush dev eth0
# ip route

(아무것도 없습니다)

일부 특수 네트워크 설정(보통 주소 충돌을 사용하는 다른 인터페이스 포함)의 경우 플래그를 사용하면 이 암시적 경로 추가를 피할 수 있습니다.noprefixroute. NetworkManager와 같은 도구는 라우팅 구성 방법을 더 효과적으로 제어할 수 있도록 이 플래그를 설정하는 경우가 많습니다.

# ip address add 192.0.2.3/24 dev eth0 noprefixroute
# ip route

(아무것도 없습니다)

이 암시적 LAN 경로는 모든 운영 체제에 존재하지 않을 수 있으며 일부 운영 체제에서는 항상 명시적으로 설정해야 할 수도 있습니다.

답변2

서브넷은 라우팅 없이 이 인터페이스를 통해 연결할 수 있는 호스트를 지정합니다. 귀하의 경우에는 enp0s3게이트웨이(라우팅이 제공되는 것임)를 사용하지 않고 10.0.2.0에서 10.0.2.255까지의 호스트에 연결하는 데 사용할 수 있습니다(불가능의 정의가 진화하고 있기 때문에 여기서는 불가능한 값을 무시합니다). 그림).

답변3

라우팅 테이블은 패킷이 라우팅되어야 하는지, 아니면 기본 레이어 2 프로토콜을 사용하여 동일한 "링크"/서브넷에 직접 연결된 호스트에 전달되어야 하는지 알아야 합니다.

참고: 패킷을 라우팅해야 하는 경우 기본 계층 2 프로토콜을 사용하여 다음 홉/게이트웨이로 전달됩니다. 따라서 기본적으로 라우팅 테이블은 사용할 다음 홉 IP를 레이어 2에 알려줍니다. 이는 패킷과 동일하거나(동일한 서브넷에 있는 경우) 라우팅 테이블의 동일한 다음 홉입니다. 따라서 라우팅 테이블에는 이를 확인하기 위한 마스크가 필요합니다.

관련 정보