시스템의 네트워크에 대한 전반적인 정보를 출력하고 설정을 수정할 수 있다. (참고로 Windows는 ifconfig 명령어 대신 ipconfig 명령어를 사용한다.)
명령어 입력하고 출력을 해보면 아래와 같은 정보가 출력된다.
$ ifconfig
eth0은 첫번째 이더넷 카드를 말하고 lo는 Loopback 주소이다.eth0는 공유기에서 할당받은 사설 네트워크 대역의 IP(192.168.0.0/16)을 받았고 lo는 Loopback 주소인 127.0.0.1을 받았다.
참고 : NIC이라고 불리는 Network Interface Card는 이더넷 카드보다 좀 더 포괄적인 개념이다. Wifi 동글도 일종의 NIC이라고 할 수 있고 이더넷 카드도 마찬가지이다.
ifconfig은 네트워크 환경정보를 출력하는 것 외에도 직접 설정을 조작하거나 네트워크 드라이버를 On/Off 할 수 있다고 했다.
그러나 ifconfig에서 진행한 설정 변경은 메모리 위에서만 저장되어 있기 때문에 서버가 재시작하면 원상복구된다. 이 설정을 계속 유지시키고싶다면 직접 네트워크를 설정하는 파일을 수정해야 한다.
네트워크 관련 파일들의 목록은 아래와 같다.
1. /etc/sysconfig/network : 네트워크 활성화 여부, Host명, 게이트웨이를 지정한다.
2. /etc/resolv.conf : DNS 서버의 주소가 저장되어 있다.
3. /etc/sysconfig/network-scripts : 네트워크 관련 명령어들이 저장되어 있는 디렉토리
4. init 스크립트(/etc/init.d/network) or Systemd 관리 서비스
그래도 하나 기억해야 할 것은 ifconfig up/down 명령어이다. 직접적으로 NIC을 끄고 켜는 명령어이다. 네트워크 설정을 바꾼 다음에 NIC도 재시작을 해야 설정이 적용이 되는 경우가 있어 이 명령어가 필요하다.
# 첫번째 이더넷 카드 사용 중지
$ ifconfig eth0 down
# 첫번째 이더넷 카드 사용 시작
$ ifconfig eth0 up
따라서 원격 접속 시에는 함부로 ifconfig down을 하면 원격 접속이 바로 끊길 수 있으니 주의해야 한다.
추가로 ifup과 ifdown(빌트인 명령어가 아닌 스크립트이다. /etc/sysconfig/network-scripts 디렉토리에서 찾을 수 있다.)도 비슷한 역할을 한다.
그렇다면 차이점이 궁금할 수도 있는데, 구글링하면 쉽게 찾을 수 있다.
레드햇 지식 베이스 : https://access.redhat.com/solutions/27166
링크를 들어가면 이미 요약이 되어 있지만 한번 더 요약 및 번역을 해보면 아래와 같이 요약을 할 수 있을 것이다.
참고 : IFF_UP Flag와 차이는 있지만 IFF_RUNNING Flag는 크게 신경쓰지 않아도 될 듯하다. https://stackoverflow.com/questions/11679514/what-is-the-difference-between-iff-up-and-iff-running
ifconfig이 이더넷을 포함한 모든 네트워크 환경 정보를 출력해주었다면 iwconfig은 무선랜 네트워크 환경을 출력해준다.
일단 실험하고 있는 WSL CentOS 7 리눅스 환경에는 iwconfig 명령 자체를 찾을 수 없고 다운로드 받아야 한다.
그러나 다운로드 받아도 데스크탑에 무선랜 장치가 없기 때문에 아무것도 뜨지 않을 것이다. 나중에 WiFi 동글 찾아서 꼽고 실험을 해봐야 할 것 같다.
책을 보니 ifconfig과는 다르게 sit0라는 특별한 인터페이스가 있다는 것을 볼 수 있는데 이는 무선 환경에서는 IPv4와 IPv6의 호환을 위해 사용하는 특수 목적의 가상장치를 이용하기 때문이라고 한다.
위에서도 나왔지만 ipup/down 스크립트에서 사용되는 명령어이다. 라우팅과 디바이스 터널링에 대한 정보를 출력하고 조작할 수 있다.
커널의 라우팅 테이블을 출력하거나 수정할 수 있다.
$ route
위의 사진을 보면 직접 route 명령어를 쳐서 출력한 결과이다. 리스트의 가장 첫번째가 중요한데, 의미를 해석해보자면 Destination이 0.0.0.0인 패킷은 모두 192.168.25.1 GW(내가 쓰는 공유기)를 거친다는 것이다.
Genmask는 패킷의 목적지 IP에 AND 연산을 통해 목적지 IP를 지정하는 역할을 한다.
네트워크 패킷을 실시간으로 출력, 옵션 없이 실행하면 모든 네트워크 패킷을 볼 수 있고, 옵션을 통해 port를 지정해줄 수도 있다.
ifconfig가 네트워크 인터페이스 환경에 대한 정보였다면 netstat은 네트워크 통계 정보라고 볼 수 있다. 주로 사용되고 있는 포트가 어떤 것이 있는지 확인하기 위해서 이 명령어를 사용한다.
$ netstat -lptu
netstat 명령어를 많이 사용해봤을 수도 있지만 netstat 명령어와 여러가지 옵션이 붙어 헷갈릴 때가 많다.
매뉴얼 페이지를 보고 간단하게 정리를 해보면 아래와 같다.
1. -l : Listening, 즉 사용되고 있는지 여부를 따진다.
2. -p : p는 program의 약자, Process의 PID와 이름을 보여준다.
3. -t : TCP
4. -u : UDP, 그러니까 옵션에 tu가 들어가 있는 것은 TCP와 UDP 포트 모두 보겠다는 것이다.