![인터페이스가 다운되었을 때 `ip`와 `ifconfig`의 동작이 다른 이유는 무엇입니까?](https://rvso.com/image/1604293/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EA%B0%80%20%EB%8B%A4%EC%9A%B4%EB%90%98%EC%97%88%EC%9D%84%20%EB%95%8C%20%60ip%60%EC%99%80%20%60ifconfig%60%EC%9D%98%20%EB%8F%99%EC%9E%91%EC%9D%B4%20%EB%8B%A4%EB%A5%B8%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
먼저 인터페이스를 종료합니다.
# Shutdown the interfaces
ip link set enp2s0f0 down
ip link set enp2s0f1 down
사용 ifconfig
:
# Set subnets to interfaces
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
# Result => NO PROBLEM, my routes are here even tho the interfaces are down
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
10.11.0.1 dev enp2s0f1 scope link
10.11.1.1 dev enp2s0f0 scope link
사용 ip
:
# Set subnets to interfaces
ip addr add 10.0.0.1/24 dev enp2s0f0
ip addr add 10.0.1.1/24 dev enp2s0f1
$ip route
#NOTHING => Where are the routes?!
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
$ip route
#NOTHING => Where are my routes?!
ip link set enp2s0f0 up
ip link set enp2s0f1 up
# Result => WOW only two routes appeared miraculously
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
# => Where are my 10.11.*.* routes?
ip route
내 경로가 표시되지 않는 이유는 무엇입니까 ?- 인터페이스를 활성화한 후 내 경로가 기적적으로 추가된 위치는 어디입니까? 왜 전에는 볼 수 없나요?
- 인터페이스를 불러온 후 내 경로가 표시되지 않는 이유는 무엇입니까?
인터페이스를 활성화하기 전에 모든 경로를 설정하고 싶습니다. 그렇게 해도 아무런 문제가 없습니다 ifconfig
. 다음에는 어떤 놀라움이 찾아올지 궁금합니다.
나는 호환 가능하다고 생각했고 ifconfig
ifconfig ip
에서 ip로의 이동이 그렇게 쉽지 않을 것이라고 생각했습니다.
답변1
세 가지 질문 모두 하나의 오해에서 비롯됩니다.
ifconfig
인터페이스와 주소는 up
옵션을 의미합니다., 따라서 귀하의 ifconfig
예에서는 주소를 지정하는 동시에 인터페이스가 나타납니다.
이는 다음을 의미합니다.
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
실제로는 짧습니다
ifconfig enp2s0f0 10.0.0.1/24 up
ifconfig enp2s0f1 10.0.1.1/24 up
ip
~에서iproute2다음 작업을 보다 깔끔하게 구성합니다.
- 가져오는상호 작용올리고 내리고(
ip link
), - IP 할당주소네트워크 장치(
ip address
) 에 연결 - 커널 구성라우팅테이블(
ip route
).
ifconfig
이러한 서로 다른 개념을 혼합하여 더 혼란스럽거나 덜 직관적입니다.
경로, 네트워크 장치, 인터페이스 및 터널의 상태를 관리하는 편리한 방법을 원한다면 네트워크 구성 관리 도구 사용을 고려해야 합니다. 이를 통해 편리한 선언적 구문으로 네트워크를 정의할 수 있으며, 명령 하나로 빠르게 시작하거나 종료할 수 있습니다.
다음은 일반적인 Linux 배포판에 포함된 일부 도구입니다.
- 데비안 –ifupdown(
/etc/network/interfaces
,/etc/network/interfaces.d/
) - 우분투 –netplan.io(
/etc/netplan/
) - 레드햇 엔터프라이즈 리눅스/CentOS –ifcfg(
/etc/sysconfig/network-scripts/
) - 일반적으로 데스크톱 환경의 배포판 –네트워크매니저(
/etc/NetworkManager/
)
완전성을 위해 귀하의 질문에 대한 답변은 다음과 같습니다.
ip route
내 경로가 표시되지 않는 이유는 무엇입니까 ?
해당 링크가 다운되면 경로가 기본 테이블에 저장되지 않습니다. 명령 ip
시퀀스는 관련 인터페이스를 먼저 불러오지 않습니다.
- 인터페이스를 활성화한 후 내 경로가 기적적으로 추가된 위치는 어디입니까? 왜 전에는 볼 수 없나요?
인터페이스가 다운되면 디바이스의 경로가 라우팅 테이블에 등록되지 않습니다.
- 인터페이스를 불러온 후 내 경로가 표시되지 않는 이유는 무엇입니까?
해당 인터페이스가 먼저 작동되어야 하므로 경로가 추가되지 않았습니다. 다운된 인터페이스에서 경로 추가를 시도한 경우 RTNETLINK answers: Network is down
또는 같은 오류 메시지가 표시되었을 것입니다 . Error: Device for nexthop is not up.
반환 코드( $?
)도 0이 아니어야 합니다.
인터페이스를 활성화하기 전에 모든 경로를 설정하고 싶습니다.
내가 아는 한, 이는 ifconfig
. ifconfig
경로를 추가하기 전에 명령이 실제로 인터페이스를 불러온다는 점을 기억하세요 .
다음에는 어떤 놀라움이 찾아올지 궁금합니다.
바라건대 아무도 없습니다. ip
의 관심사 분리는 다음과 같은 경우에 많은 의미가 있습니다.그것을 알아가다.
생각
ifconfig
하고ip
궁합이 맞았다
두 명령은 일부 겹치는 부분이 있지만 서로 바꿔 사용할 수는 없습니다.