"ifconfig"와 "ip" 명령의 차이점

"ifconfig"와 "ip" 명령의 차이점

"ifconfig" 명령에 관한 기사/자습서를 읽었는데 대부분 공통된 설명이 포함되어 있습니다.

"ip 명령에는 ifconfig가 권장되지 않습니다"

그리고 ip 명령을 배우는 것이 좋습니다. 그러나 그들 중 누구도 "ip" 명령이 "ifconfig"보다 더 강력한 이유를 설명하지 않습니다.

그들 사이의 차이점은 무엇입니까?

답변1

ifconfig나는 net-tools오랫동안 Linux 네트워킹 스택을 제대로 따라갈 수 없었습니다. 또한 ioctl커널과 상호 작용하는 추악하고 덜 강력한 방법인 네트워크 구성 에도 여전히 사용됩니다 .

Linux 네트워킹 코드의 수많은 변경 사항과 많은 새로운 기능은 net-tools다중 경로 라우팅, 정책 라우팅(RPDB 참조)을 사용하여 액세스할 수 없습니다. route동일한 메트릭을 사용하여 동일한 대상에 여러 경로를 추가하는 것과 같은 어리석은 작업을 수행할 수 있습니다.

또한:

  • ifconfig일부 장치의 올바른 하드웨어 주소가 보고되지 않습니다.
  • ipip, 등 의 커널 내 정적 터널은 구성할 수 없습니다 sit.grel2tp
  • tun또는 장치를 만들 수 없습니다 tap.
  • 주어진 인터페이스에 여러 주소를 추가하는 의미도 좋지 않습니다.
  • net-tools또한 Linux 흐름 제어 시스템을 구성하는 데 사용할 수 없습니다 .

당신은 또한 볼 수 있습니다ifconfig안타깝다.

편집하다: net-tools개발 중단 주장을 삭제했고, 지금쯤 이 글의 출처를 잊어버렸습니다. net-tools주로 버그 수정, 국제화 등의 작은 개선 사항과 기능을 제공하기는 했지만 릴리스 이후 작업이 계속 진행되었습니다 .iproute2

답변2

ifconfig네트워크 인터페이스에 대한 정보를 표시하고 특정 설정을 변경하는 전통적인 명령입니다. 특히 인터페이스를 열고 닫을 수 있습니다. 대부분의 Unix 변형에 존재합니다.

Linux에서는 이 ifconfig명령이 오랫동안 발전하지 않았습니다. 여전히 잘 작동합니다. 뭔가를 사용하고 있다면 ifconfig멈출 이유가 없습니다.

Linux는 다음 서비스도 제공합니다 ip.IP 경로 2도구 키트. 이 명령은 , 및 를 ip포함한 여러 가지 기본 명령과 기타 명령을 결합합니다 . 훨씬 더 많은 일을 할 수 있습니다 . 반면에 특히 임베디드 시스템에서는 항상 존재하는 것은 아닙니다(Linux 이외의 UNIX 변형에서는 절대 존재하지 않습니다).ifconfigroutearpipifconfigip

구문 분석 의 출력이 ifconfig약간 나쁩니다. 구문 분석 의 출력이 ip약간 나쁩니다. 거기에는 승자가 없습니다.

답변3

필로나의 답변에 뭔가를 추가하기 만하면됩니다. 2005년경에 네트워크 스택을 제어하는 ​​새로운 메커니즘이 도입되었습니다.네트워크 링크 소켓.

iproute2전이중 netlink 소켓 메커니즘을 활용하고 시스템 호출 ifconfig에 의존하도록 네트워크 인터페이스를 구성합니다 . ioctl여기에는 2개의 주요 논문이 있습니다.Netlink의 동기그리고rtnetlink 사용.

답변4

내 경험을 바탕으로 결과를 찾았습니다.구성된 경우생각보다 소화하기 쉬움IP-*사령부, IMO는 시각적으로 약간 아쉬운 점이 있습니다. 일반적인 사용법에서는 인터페이스, 상태, IP 주소 등 제공된 것의 하위 집합만 필요합니다.구성된 경우읽기가 더 쉽습니다.

구성된 경우:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 297454  bytes 14872700 (14.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 297454  bytes 14872700 (14.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.20  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

IP 주소와 비교:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
   valid_lft forever preferred_lft forever
3: eth1 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.20/24 brd 10.0.0.255 scope global eth1
   valid_lft forever preferred_lft forever

관련 정보