인터페이스 범위(글로벌 대 링크)의 목적은 무엇입니까?

인터페이스 범위(글로벌 대 링크)의 목적은 무엇입니까?

라우팅 테이블 항목에는 속성이 있습니다 scope. global에서 으로(또는 그 반대로) 변경이 link네트워크 시스템에 어떤 영향을 미치는지 알고 싶습니다 .

답변1

NIC 설정에 3개의 서로 다른 IP 범위가 있다고 가정해 보겠습니다.

14: ens160: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 36:ee:4c:d0:90:3a brd ff:ff:ff:ff:ff:ff
    inet 172.22.0.1/24 scope host ens160
    inet 172.21.0.1/24 scope link ens160
    inet 172.20.0.1/24 scope global ens160
   

라우팅 테이블에 ens160 경로가 있다고 가정합니다.

172.20.0.0/24 dev ens160  proto kernel  scope link  src 172.20.0.1

보시다시피 NIC 및 라우팅에 범위 설정이 있습니다.

경로가 src를 지정하는 경우 이 경우 Linux는 경로 및 NIC 설정의 범위 설정을 완전히 무시합니다. 그것은 그것을 완전히 무시합니다. 그리고 리눅스는 NIC에서 나가는 패킷에 src ip=172.20.0.1을 사용합니다.

다른 경로가 있다고 가정해 보겠습니다.

4.4.4.4  scope link

src ip가 경로에 지정되지 않은 경우 Linux는 경로의 범위를 확인합니다. 우리의 경우 범위 = 링크입니다. 그런 다음 Linux는 NIC 설정으로 이동하여 동일한 범위의 IP를 검색합니다. 이 예에서는 IP 범위 = 링크 = 172.21.0.1/24입니다.

따라서 dst ip = 4.4.4.4의 경우 Linux는 src ip = 172.21.0.1을 사용합니다.

경로에 범위가 지정되지 않으면 범위 = 전역을 의미합니다.

35.35.35.35 dev ens160

다음. 기본 경로를 살펴보겠습니다.

default via 172.16.102.1 dev ens160 onlink

범위를 지정하지 않습니다. 이는 범위 = 전역을 의미합니다.

기본 경로는 src를 지정하지 않기 때문에 이는 Linux가scope=global에서 ens160 IP를 검색하여 이를 src IP로 사용함을 의미합니다.

다음. 경로에 하나의 범위가 있고 NIC IP에 다른 범위가 있다고 가정합니다. 예

네트워크 카드

14: vasya2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 36:ee:4c:d0:90:3a brd ff:ff:ff:ff:ff:ff
    inet 172.22.0.1/24 scope host vasya2

경로

14.14.14.14  scope link

14.14.14.14 ping을 하면 무슨 일이 일어나는가?

경로에는 범위=링크가 있지만 NIC에는 범위=호스트인 IP만 있습니다. 중요한 점은 범위 = 호스트인 IP는 범위 = 호스트인 경로의 백엔드 역할만 할 수 있다는 것입니다. 다른 경우에는 Linux가 그러한 IP를 사용할 수 없습니다. 따라서 Linux는 src ip = 0.0.0.0을 dst ip 14.14.14.14로 사용합니다.

(실제로 네트워크 카드가 실제 물리적인지 가상인지 여부에 따라 달라집니다. 네트워크 카드가 가상이면 이 경우 Linux는
범위=글로벌인 다른 네트워크 카드의 다른 IP를 사용합니다)

일반 규칙: 경로가 src를 지정하지 않으면

  1. 범위=호스트인 IP는 범위=호스트인 경로의 백엔드 역할만 할 수 있습니다.
  2. 범위=링크인 IP는 범위=호스트 또는 범위=링크인 경로의 백엔드로만 사용할 수 있습니다.
  3. 범위=글로벌인 IP는 모든 범위의 경로에 대한 백엔드 역할만 할 수 있습니다.

이런 불편한 건축물에 많이 놀랐어요

이 모든 "범위 항목"을 잊어버리려면 라우팅 테이블의 경로에 있는 src 필드를 사용하세요.

답변2

route scope다음의 정의를 살펴보겠습니다 Linux.

The scope of a route in Linux is an indicator of the distance to the
destination network.

Host
    A route has host scope when it leads to a destination address on the local host.
Link
    A route has link scope when it leads to a destination address on the local network.
Universe
    A route has universe scope when it leads to addresses more than one hop away.

따라서 경로의 범위를 변경하면 컴퓨터가 더 이상 해당 경로의 네트워크에 연결하지 못할 수도 있습니다. 라우터는 로컬 네트워크에 속한 대상으로 전송된 패킷을 전달하지 않습니다.

범위에는 라우팅할 수 없는(개인) 주소와 라우팅할 수 있는(공용) 주소 간의 차이가 반영되지 않습니다.

10.0.0.1(개인 - 라우팅 불가능) 및 8.8.8.8(공개 - 라우팅 가능) 모두 링크 또는 유니버스 범위를 지정할 수 있습니다. 시스템 관리자가 구성합니다.

답변3

범위는 소스 주소 선택에 영향을 미칩니다.

소스 주소가 아직 고정되지 않은 연결/연결의 경우(예: TCP 연결이 시작되지만 수신 패킷에 반응할 때는 시작되지 않음) 소스 주소는 패킷이 도달하려는 경로 범위에 따라 선택됩니다.

이것이 바로 주소에도 범위 속성이 있는 이유입니다.

소스 주소 선택이 발생하지 않는 예:들어오는 TCP 연결 시작 또는 핑 패킷은 반대 IP 주소(소스 → 대상, 대상 → 소스)로 응답됩니다. 그렇지 않으면 다른 호스트가 해당 패킷을 응답으로 인식하지 못합니다.

소스 주소 선택이 발생하는 예: ping xyz또는 telnet xyz. 일반 프로그램은 사용할 소스 주소를 운영 체제에 알려주지 않습니다(이는 좋은 습관입니다). 운영 체제는 하나를 선택하고 그렇게 할 준비를 해야 합니다. 경로에 대해 잠재적인 나가는 패킷을 테스트합니다(일반 라우팅은 대상 주소만 사용하며, 고급 라우팅을 사용하는 경우 패킷에는 아직 소스 주소가 없습니다!). . 결과 범위는 가능한 경우 나가는 인터페이스의 해당 범위에 있는 주소로 선택을 줄입니다.

관련 정보