'ifconfig' 명령에 대한 일부 기사/튜토리얼을 읽었는데, 대부분 공통된 설명이 포함되어 있었습니다.
"ifconfig는 ip 명령에 의해 더 이상 사용되지 않습니다"
IP 명령을 배우도록 제안했습니다. 그러나 그들 중 누구도 'ip' 명령이 'ifconfig'보다 더 강력하다는 것을 설명하지 못했습니다.
둘 사이의 차이점은 무엇입니까?
답변1
ifconfig
net-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 변형에서는 절대 존재하지 않습니다).ifconfig
route
arp
ip
ifconfig
ip
Parsing ifconfig
의 출력이 좀 형편없어요. Parsing ip
의 출력이 좀 형편없어요. 거기에는 승자가 없습니다.
답변3
pilona의 답변에 약간의 비트를 추가하기 만하면됩니다. 2005년경에 네트워크 스택을 제어하는 새로운 메커니즘이 도입되었습니다.넷링크 소켓.
네트워크 인터페이스를 구성하려면 시스템 호출 에 의존하면서 iproute2
전이중 넷링크 소켓 메커니즘을 사용합니다 . 여기에 2개의 주요 논문이 있습니다.ifconfig
ioctl
넷링크의 동기그리고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