2024.06.26 - [공부하자/Linux] - [Linux]linux-ubuntu 20.04 실전 기본 명령어 -3(네트워크상태확인, ifconfig, ping)
**이전글**
지난 시간에는 리눅스 네트워크와 관련된 기본 명령어인 `ifconfig`과 `ping`에 대해서 살펴보았다. 리눅스는 그 외에도 다양한 네트워크 관련 명령어를 제공하고 있다. 오늘은 자주쓰이는 네트워크 관련 명령어들을 살펴보자.
네트워크
1) ip
지난시간 `ifconfig`를 통해 네트워크 상태를 확인하는 방법을 배웠다. `ifconfig`는 오래되고 기본적인 도구이지만 여러가지 한계점이 있었고 그 것을 해결하기 위해 좀 더 현대적인 네트워크 관리도구가 개발되었다. 그것이 바로 `ip`이다. `ip`는 `ifconfig`에서는 제공하지 않는 VLAN설정이나 다중주소 지원, 인터페이스 상태관리 등 을 제공하고 다양한 네트워크 작업을 통합적이고 일관된 방식으로 처리할 수있다는 것이 장점이다.
아래 간단한 예제를 실습해보면서 ip의 기능을 알아보자.
#모든 네트워크 인터페이스와 상태 확인
ip addr show
#특정 인터페이스 (예: eth0)의 정보 확인
ip addr show eth0
#새로운 IP 주소 추가
sudo ip addr add 192.xxx.xxx.xxx/24 dev eth0
#추가된 IP 주소 삭제
sudo ip addr del 192.xxx.xxx.xxx/24 dev eth0
#인터페이스 활성화
sudo ip link set eth0 up
#인터페이스 비활성화
sudo ip link set eth0 down
`ip addr show`명령어를 치면 모든 네트워크 인터페이스와 상태를 확인할 수 있다. `ifconfig`과 거의 비슷한 정보를 제공한다.
특정 인터페이스(예: eth0)의 이름을 가지고 단일 조회도 가능하다.
`eth0` 네트워크 인터페이스에 새로운 ip를 추가해 준다. 그 다음 다시 `ip addr show`로 조회를 하니 eth0에 새로기입한 ip가 추가되어 있는 것을 볼 수 있다. 이 기능이 바로 기존 `ifconfig` 에서는 지원하지 않는 다중주소지원 기능인데 하나의 네트워크 인터페이스가 복수의 ip주소를 가질 수 있다. 아직 쓰임새가 마땅히 생각나지는 않지만 여러 용도로 사용될 수 있을 것 같다.
`sudo ip link set eth0 down` 명령어는 해당 인터페이스를 비활성화 한다. eth0의 상태를 표현하던 `UP`이 사라진 것을 확인할 수 있다.
다중ip를 위해 추가했던 ip주소를 다시 삭제해준다.
2) netstat
#모든 네트워크 연결 상태 확인
netstat -a
#현재 열려 있는 포트와 그 포트의 프로그램 확인
sudo netstat -tuln
-t : TCP 연결 정보를 표시
-u : UDP 연결 정보를 표시
-n : 숫자 형식으로 IP 주소와 포트를 표시
-a : 모든 연결을 표시 (리스닝과 연결 상태 모두 포함)
-r : 라우팅 테이블을 표시
-l : 리스닝 상태인 소켓만 표시
netstat뒤에 붙을 수 있는 일반적인 옵션들은 위와 같다. `-tuln`이라면 tcp, udp 연결정보를 숫자형식으로 리스닝중인 소켓만 조회한다는 뜻이 된다.
`netstat -a`를 입력하면 다음과 같이 네트워크 연결상태가 출력된다.
*만약 netstat패키지가 없다는 메시지가 출력된다면 `sudo apt install net-tools` 를 통해 패키지를 다운받고 나서 실행해보자.
3) traceroute
traceroute는 패킷이 목적지까지 도달하기 까지의 경로를 추적한다.
traceroute google.com
현재 내 네트워크 환경에서 google.com까지의 경로를 보여주고 걸리는 시간을 계산해서 보여준다.
맨 좌측에 보이는 숫자는 홉(hop)수 인데 홉수는 목적지까지 거쳐야하는 라우터의 갯수라고 볼 수 있다. traceroute의 디폴트 세팅은 최대 홉수 30(30 hops max)이다. 30홉까지만 추적하고 그 이상 넘어가면 실행이 종료된다. 위 예제에서는 총 13홉 안에 목표에 도달하여 traceroute가 종료되었다.
중간에 `***`로 되어있는 곳들은 ICMP(ping)을 차단해 놓거나 방화벽 필터링 등으로 응답을 받지 못한 경우를 말한다. traceroute는 최대 홉수를 하나씩 늘려가며 핑을 날려 반환시간을 체크하는 방식으로 작동한다. 때문에 경로에 ICMP을 차단하는 무엇인가가 있다면 반환시간을 계산 할 수 없고 `***`으로 출력되는 것이다.
4) nslookup
nslookup
nslookup은 도메인 네임시스템(DNS)를 통해 호스트 네임이나 IP주소를 조회할 수 있는 기능을 말한다.
`google.com` 은 DNS에 의해 실제 ip 주소와 매핑된다. 하지만 실제 ip 주소는 겉으로는 보이지 않는데 이것을 nslookup을 통해 알 수 있다.
실제 구글의 ip주소인지 확인하기 위해 브라우저에 ip주소를 입력해본다.
아래처럼 구글웹사이트로 잘 이동하는 것을 확인할 수 있다.
5) dig
dig google.com
만약 좀 더 자세하게 DNS관련 정보를 확인하고 싶다면 `dig`를 사용한다. `nslookup`은 간결하게 정보를 제공해주었다면 `dig`는 많은 정보를 제공해준다.
6) curl 및 wget
#curl을 사용하여 웹 페이지 내용 가져오기
curl http://example.com
#wget을 사용하여 파일 다운로드
wget http://example.com/file.zip
curl이나 wget을 사용하면 브라우저나 포스트맨 같은 툴 없이도 간단하게 url요청을 할 수 있다. `curl`은 주로 HTTP API호출과 데이터 전송에 많이 사용되며 `wget`은 파일 다운로드나 웹 크롤링에 활용된다.
이외에도 네트워크 관련된 기능들이 많이 존재하지만 가장 핵심적인 명령어들만 포스팅에 담으려 노력했다.
'공부하자 > Linux' 카테고리의 다른 글
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -3(네트워크상태확인, ifconfig, ping) (0) | 2024.06.26 |
---|---|
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -2(사용자 및 권한관리) (0) | 2024.06.21 |
[Linux]linux-ubuntu 20.04 실전 기본 명령어 -1(파일시스템) (0) | 2024.06.20 |