[명령어 알아보기]ipconfig - ifconfig
명령어 ipconfig 와 ifconfig 는 운영체제에서 네트워크 인테페이스의 설정 상태를 확인하는 데 사용되는 명령어 이다.
- ipconfig
주로 윈도우 운영체제에서 사용, 네트워크 인터페이스의 IP 주소 및 기타 TCP/IP 설정을 표시.
DHCP 상태, DNS 서버 정보 등을 확인 할 수 있음. - ifconfig
주로 리눅스,유닉스 계열 운영체제에서 사용, 네트워크 인터페이스의 설정 및 상태를 표시한다.
IP주소, 서브넷 마스크, 브로드캐스트 주소, MAC 주소 등을 확인할 수 있고, 인터페이스를 활성화/비활성화 할 수 있다.
현재 사용 사용 중인 데스크탑의 운영체제는 리눅스 이기 때문에, ifconfig 명령어를 실행해보도록 한다.
1.명령어 실행하기
- 네트워크 인터페이스는 3개가 있다. Docker 의 가상 네트워크 인터페이스, 유선 연결된 네트워크 인터페이스, 루프백 인터페이스가 존재하는 것을 확인할 수 있다.
- flags = 비트 플래그로
[UP(1), BROADCAST(2), DEBUG(4), LOOPBACK(8), RUNNING(16), MULTICAST(32), PROMISC(64), ALLMULTI(128), NOARP(256), MASTER(516), SLAVE(1024), MULTICAST(2048), PORTSEL(4096)]
다음과 같은 상태들을 나타낸다고 한다.
예를 들어 두 번째 네트워크 인터페이스의 flag = 4163 이면 이진수로 1 0000 0100 0011 -> 0001 0000 0100 0011 으로 나타낼 수 있고 각 자리수에 맞는 플래그들이 활성화 되어있는 것으로 파악하면 된다. - mtu = Maximum transmission unit ( 패킷의 최대 전송 단위는 1500kb -> 기본이 1500 으로 설정 된다고 한다)
- inet 아이피주소 : 이 인터페이스의 IPv4 주소. (라우터가 DHCP 기능으로 할당 해줬겠지?)
- netmask 아이피주소 : 서브넷 마스크
- broadcast 아이피주소 : 이 인터페이스의 브로드캐스트 주소.
- ether 주소 : 인터페이스의 MAC 주소
- txqueuelen 1000 : 전송 대기열의 길이를 표시 ( 네트워크 인터페이스가 전송할 패킷을 저장하는 큐의 길이)
- RX packets : 수신한 패킷의 수와 다른 정보들 (errors, dropped, overruns frame)
- TX packets : 전송한 패킷의 수와 다른 정보들 errors, dropped, overruns frame, collisions)
- device interrup 번호 : 이 인터페이스가 사용하는 인터럽트 번호
- memory 주소 : 이 인터페이스가 사용하는 메모리 주소의 범위
2. 루프백 주소?
현재 유선 연결된 네트워크 인터페이스에 대한 정보, 그리고 도커를 위해 셋팅된 네트워크 정보들은 실제로 사용자가 필요하기 때문에 구성되었고. 다양한 정보들이 보여지는 것이 맞다고 생각했다. 그런데 루프백 주소는 왜 IP가 하나 할당되어 있고, 송 수신된 패킷은 어떤 곳에서 어떤 곳으로 패킷을 주고 받은건지 궁금해졌다.
공부를 해보니 루프백 주소의 필요성은 다음과 같다.
1. 자기 자신을 참조
자기 자신을 참조하여 시스템이 네트워크 통신을 테스트하고, 내부 애플리케이션을 개발하는 데 이용할 수 있다. 예를 들어, 애플리케이션이 자신의 서비스와 통신할 때 로컬 주소(127.0.0.1)를 사용하여 호출할 수 있다.
2. 네트워크 테스트
루프백 인터페이스를 통해 네트워크 설정을 테스트할 수 있다. 네트워크가 제대로 작동하는지 확인하기 위해 ping 127.0.0.1 명령어를 사용하여 자신의 시스템에 네트워크 요청을 보내고 네트워크 스택이 올바르게 작동하는지 확인할 수 있다.
3. 애플리케이션 개발
개발자는 애플리케이션을 테스트할 때 실제 네트워크에 연결하지 않고도 루프백 인터페이스를 사용하여 자신의 애플리케이션과 서비스 간의 통신을 시험할 하여 개발과 디버깅 과정에서 매우 유용하게 사용할 수 있다.
4. 보안
루프백 인터페이스는 외부와의 통신이 없기 때문에 보안상 안전한 환경을 제공.
5. 서비스 연결
여러 서비스가 동일한 시스템에서 실행될 때, 루프백 인터페이스를 통해 서로 연결된다. 예를 들어, 웹 서버와 데이터베이스 서버가 같은 시스템에서 실행되고 있을 때, 루프백 주소를 사용하여 서로 통신할 수 있다.
다양한 필요성들은 잘 모르겠지만, 시스템 내에서 프로세스들 끼리 데이터를 주고 받아야 할 때, 루프백 주소를 통해 데이터를 주고 받는 경우가 있다면 납득이 갔다. 그런데 프로세스들이 루프백 주소 말고 데이터를 주고받는 방법은 다양할 것 같아 찾아보니
공유메모리, 파이프, 메시지큐, 소켓, 파일, 신호 를 통해 데이터를 주고 받을 수 있다고 한다.
하지만 어떠한 방법이든 장 단점이 존재하고 방법에 따라 쓰임이 적절한 곳에 쓰이는게 기술이라고, 루프백을 통해 데이터를 주고받는 경우에는 데이터 전송이 상대적으로 빠르고 안전하며, 설정이 간편하고 개발 및 디버깅을 용이하게 만드는 여러 가지 장점 있다고 한다.
3. 주요 옵션
1. 특정 인터페이스 정보 조회
ifconfig [인터페이스 이름]:
특정 네트워크 인터페이스(예: eth0, lo, wlan0)의 상태를 확인.
ifconfig eth0
3. IP 주소 설정
ifconfig [인터페이스 이름] [IP 주소]: 특정 인터페이스에 IP 주소를 설정.
ifconfig eth0 192.168.1.10
4. 서브넷 마스크 설정
ifconfig [인터페이스 이름] netmask [서브넷 마스크]: 서브넷 마스크를 설정.
ifconfig eth0 netmask 255.255.255.0
5. 인터페이스 활성화
ifconfig [인터페이스 이름] up: 지정된 네트워크 인터페이스를 활성화.
ifconfig eth0 up
6. 인터페이스 비활성화
ifconfig [인터페이스 이름] down: 지정된 네트워크 인터페이스를 비활성화.
ifconfig eth0 down
7. 브로드캐스트 주소 설정
ifconfig [인터페이스 이름] broadcast [브로드캐스트 주소]: 브로드캐스트 주소를 설정.
ifconfig eth0 broadcast 192.168.1.255
8. MAC 주소 변경
ifconfig [인터페이스 이름] hw ether [MAC 주소]: 인터페이스의 MAC 주소를 변경.
ifconfig eth0 hw ether 00:11:22:33:44:55
9. MTU 설정
ifconfig [인터페이스 이름] mtu [MTU 값]: 최대 전송 단위(MTU)를 설정.
ifconfig eth0 mtu 1400