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

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

'ifconfig' 명령에 대한 일부 기사/튜토리얼을 읽었는데, 대부분 공통된 설명이 포함되어 있었습니다.

"ifconfig는 ip 명령에 의해 더 이상 사용되지 않습니다"

IP 명령을 배우도록 제안했습니다. 그러나 그들 중 누구도 'ip' 명령이 'ifconfig'보다 더 강력하다는 것을 설명하지 못했습니다.

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

답변1

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

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

추가로:

  • ifconfig일부 장치에 대한 적절한 하드웨어 주소를 보고하지 않습니다.
  • 커널 내 정적 터널은 ipip, sit, gre, 등을 구성할 수 없습니다 .l2tp
  • tun또는 장치를 만들 수 없습니다 tap.
  • 주어진 인터페이스에 여러 주소를 추가하는 방법도 의미가 좋지 않습니다.
  • 또한 둘 중 하나를 사용하여 Linux 트래픽 제어 시스템을 구성할 수도 없습니다 net-tools.

또한보십시오ifconfig짜증나.

편집하다: net-tools지금쯤 이 게시물을 어디서 얻었는지 잊어버렸기 때문에 개발 중단에 대한 주장을 제거했습니다. net-tools'는 릴리스된 이후 계속 작업해 왔지만 iproute2대부분 버그 수정과 국제화와 같은 사소한 개선 및 기능이었습니다.

답변2

ifconfig네트워크 인터페이스에 대한 정보를 표시하고 일부 설정을 변경하는 전통적인 명령입니다. 특히 인터페이스를 위아래로 가져올 수 있습니다. 대부분의 유닉스 변형에 존재합니다.

Linux에서는 ifconfig명령이 오랫동안 발전하지 않았습니다. 그것이 하는 일에 대해서는 여전히 완벽하게 괜찮습니다. 뭔가를 사용하고 있다면 ifconfig멈출 이유가 없습니다.

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

Parsing ifconfig의 출력이 좀 형편없어요. Parsing ip의 출력이 좀 형편없어요. 거기에는 승자가 없습니다.

답변3

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

네트워크 인터페이스를 구성하려면 시스템 호출 에 의존하면서 iproute2전이중 넷링크 소켓 메커니즘을 사용합니다 . 여기에 2개의 주요 논문이 있습니다.ifconfigioctl넷링크의 동기그리고rtnetlink 사용법.

답변4

내 경험상 나는 다음의 결과를 발견했습니다.ifconfig비교했을 때 소화하기 더 쉽습니다.IP-*IMO에서는 시각적으로 약간 원하는 대로 남겨둔 명령입니다. 일반적인 사용에서는 제공된 것의 하위 집합(예: 인터페이스, 상태, ipaddress 등)만 필요합니다.ifconfig읽기가 더 쉽습니다.

ifconfig:

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

관련 정보