"ifconfig" 명령에 관한 기사/자습서를 읽었는데 대부분 공통된 설명이 포함되어 있습니다.
"ip 명령에는 ifconfig가 권장되지 않습니다"
그리고 ip 명령을 배우는 것이 좋습니다. 그러나 그들 중 누구도 "ip" 명령이 "ifconfig"보다 더 강력한 이유를 설명하지 않습니다.
그들 사이의 차이점은 무엇입니까?
답변1
ifconfig
나는 net-tools
오랫동안 Linux 네트워킹 스택을 제대로 따라갈 수 없었습니다. 또한 ioctl
커널과 상호 작용하는 추악하고 덜 강력한 방법인 네트워크 구성 에도 여전히 사용됩니다 .
Linux 네트워킹 코드의 수많은 변경 사항과 많은 새로운 기능은 net-tools
다중 경로 라우팅, 정책 라우팅(RPDB 참조)을 사용하여 액세스할 수 없습니다. route
동일한 메트릭을 사용하여 동일한 대상에 여러 경로를 추가하는 것과 같은 어리석은 작업을 수행할 수 있습니다.
또한:
ifconfig
일부 장치의 올바른 하드웨어 주소가 보고되지 않습니다.ipip
, 등 의 커널 내 정적 터널은 구성할 수 없습니다sit
.gre
l2tp
tun
또는 장치를 만들 수 없습니다tap
.- 주어진 인터페이스에 여러 주소를 추가하는 의미도 좋지 않습니다.
net-tools
또한 Linux 흐름 제어 시스템을 구성하는 데 사용할 수 없습니다 .
당신은 또한 볼 수 있습니다ifconfig
안타깝다.
편집하다: net-tools
개발 중단 주장을 삭제했고, 지금쯤 이 글의 출처를 잊어버렸습니다. net-tools
주로 버그 수정, 국제화 등의 작은 개선 사항과 기능을 제공하기는 했지만 릴리스 이후 작업이 계속 진행되었습니다 .iproute2
답변2
ifconfig
네트워크 인터페이스에 대한 정보를 표시하고 특정 설정을 변경하는 전통적인 명령입니다. 특히 인터페이스를 열고 닫을 수 있습니다. 대부분의 Unix 변형에 존재합니다.
Linux에서는 이 ifconfig
명령이 오랫동안 발전하지 않았습니다. 여전히 잘 작동합니다. 뭔가를 사용하고 있다면 ifconfig
멈출 이유가 없습니다.
Linux는 다음 서비스도 제공합니다 ip
.IP 경로 2도구 키트. 이 명령은 , 및 를 ip
포함한 여러 가지 기본 명령과 기타 명령을 결합합니다 . 훨씬 더 많은 일을 할 수 있습니다 . 반면에 특히 임베디드 시스템에서는 항상 존재하는 것은 아닙니다(Linux 이외의 UNIX 변형에서는 절대 존재하지 않습니다).ifconfig
route
arp
ip
ifconfig
ip
구문 분석 의 출력이 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