리눅스 필수 네트워크 명령어 알아보기(무료 실습환경 소개 포함)
안녕하세요.
리눅스 필수 네트워크 명령어로 한 번 영상을 준비를 해 봤습니다.
지난번에는 시스템 명령어 한 번 알아봤는데요 시스템 명령어에서 네트워크를 알아보지 못했어요.
조금 더 다양하게 알아보는 게 좋을 것 같아서요. 한 번 말씀을 좀 드려보도록 할게요.
지금 여기의 기준은 약간 초보 기준이고요.
그리고 또 진짜 필수적인 것만 명령어를 선별해 보았어요.
여기서 명령어 입력하는 것들을 실제로 실습 환경이 있는 게 좋잖아요.
그래서 저희 리얼리눅스 사이트 안에 리눅스 실습 환경이 또 제공이 되고 있거든요.
그것도 한번 간략하게 소개해 드리면서 진행을 해보도록 하겠습니다.
구글이나, 네이버에다가 이제 리얼리눅스 검색하셔도 되고요.
reallinux.co.kr 사이트 접속하실 수가 있어요.
로그인 하시게 되면은 이제 구글 계정으로 로그인 하실 수가 있겠고요.
그리고 이제 마이페이지 보시게 되면은 실습 환경이 이렇게 존재를 합니다.
그래서 다양한 배포판이 존재를 하고요.
여기서 우리가 지금 사용하려고 하는 그 배포판은 지금 로키(Rocky) 입니다. 로키 9.3이고요.
실제로 많은 회사들이 CentOS 도 쓰고 로키도 쓰고 많이 사용하고 있는데 레드햇 계열을 좀 많이 사용하시는 것 같아요.
그래서 앞으로의 영상들도 좀 로키 조금 애용을 많이 할 상황이고요.
그 도커, 쿠버네티스 이런 것들도 로키 환경에서 좀 세팅이 되어 있다라고 보시면 될 것 같아요.
그래서 나중에 좀 좋은 영상으로 도커, 쿠버네티스관련된 것들도 함께 좀 영상을 좀 올려 보도록 하겠습니다.
자 일단은 생성을 하시고요.
실행을 누르시면 좀 로딩하는 데 시간이 걸려요. 약간 기다려 주셔야 될 것 같고요.
약간 기다리고 나서 이렇게 좀 많이 기다려도 한 20초 안에는 실행이 되거든요.
좀 기다렸다가 실행이 되고 나면은이제 실행하시면 되겠습니다.
기본적으로 이제 회원 가입하시면 이용하실 수가 있겠고요. 무료로 사용하실 수 있고 디스크도 다 저장이 돼요.
그대로 그냥 계속 반복해서 쓰셔도 됩니다. 다만 이 머신이 한 번에 여러 개를 하실순 없어요.
그래서 보통 실습 하실 때 하나 실습 하시고 종료 시켜주시고 디스크 공간은 지워지지 않습니다.
그러니까 바로 다른 것도 쓰셔도 되거든요. 동시 자발적으로 여러 개 하는 것만 좀 제약이 있는 상황이에요.
그래서 이렇게 사용해 주시면 될 것 같고요.
터미널 실행 하시게 되면은 로키 환경이 지금 준비가 됐습니다.
이거를 좀 뽑아다가. 명령으로 한번 입력을 좀 해보도록 할 거예요.
자 첫 번째 부터 보도록 하겠습니다. 네트워크 동작 여부 확인입니다.
네트워크가 동작이 되는지를 봐야 될 거잖아요. 지금 이 상황은 어떤 상황이냐면요.
내가 그냥 리눅스에 딱 들어와서 네트워크에 관련돼서 필수적으로 가장 기초적으로 많이 하는 거.
제가 경험을 기반으로 해서 한 번 명령을 좀 도출해 봤습니다.
일단 리눅스 딱 들어왔는데 네트워크가 되나? 라고 볼 때 ping 8.8.8.8을 많이 입력을 해 봐요.
이렇게 하면은 ping이 나가는 지를 보는 건데 이때 중요한 게 뭐냐면 8.8.8.8을 하는 이유가 있습니다.
그 이유는 일단 네트워크 진짜 되는지를 보는 거거든요.
어, 그게 무슨 말입니까?
내가 ping했을 때 www,google.com을 할 수도 있잖아요.
근데 이 ping 이 나가죠. 그럼 통신이 되는 건데, 지금 보시는 것처럼 도메인 주소를 하는 것과 naver.com, google.com 이런 식으로 도메인 주소를 하는 거와 그냥 IP 주소로 하는 거는 다릅니다.
이 8.8.8.8은 구글에서 운영하고 있는 외부에서 접속할 수 있는 DNS 서버 주소예요.
그러니까 서버의 주소 ip address주소 인 거죠.
그래서 ip address로 통신이 되더라도 도메인 주소로는 통신이 안 될 수 있습니다.
그건 DNS 설정 관련돼서 문제가 있을 수가 있어요.
그래서 그런 것들은 점검하는 게 또 필요할 수 있죠.
그래서 실제로 어, DNS 관련돼서 문제가 있게 되면은 /etc/resolv.conf 파일 같은것들을 수정하면서DNS 서버주소를 수정할 수 는 있겠고요
어찌됐든 우리가 네트워크를 확인할 때는 두 개 다 확인을 해야 됩니다.
ip address를 기준으로 통신 되는 지 그럼 ip address통신 되면 네트웍은 되지만 DNS 서버 세팅이 안되어 있어서 도메인 주소로는 통신이 안 되는 경우 이렇게 두 가지를 구분하는 게 필요할 수가 있습니다.
그래서 여기 보시게 되면 이렇게 통신 하고 있는데 www.naver.com 로도 한번 해보고 curl 이라는 명령으로 한번해볼꺼에요
지금 보시게 되면은 ping을 요 www.naver.com으로 한 번 해보도록 할게요.
그러면은 안 나가거든요 그러면은 이게 왜 안 나갈까 를 일단 생각을 해 볼게요.
일단 첫 번째로 보면 whatis ping 이라고 보셨을 때 ping은 ICMP 통신을 하는 친구지.
TCP / IP 통신을 하는 게 아닙니다. 이게 무슨 말을 하고 싶으냐?
우리가 웹 서버는 HTTP 통신을 해요. HTTP 통신은 기술적으로 TCP / IP 통신을 활용합니다.
그러면 TCP / IP 통신으로 통신이 될 수가 있어야 되는데 지금 우리가 사용하는 거는 ping이고 ICMP 를 쓰고 있기 때문에 응답을 안 해줄 수 있어요.
아까 구글은 해 줬잖아요.
자, 구글은 해줬죠. 근데 구글은 약간은 이상한 거예요.
어떻게 보면은 왜냐하면은 웹 서버라고 하는 용도가 굳이 ICMP를 응답 안해도 사실은 상관은 없거든요.
왜냐하면 고객이 결제를 하고 로그인 할 때 ICMP 로 로그인 하거나 통신하는 않으니까요.
그렇긴 하지만 어찌 됐든 받아 주고는 있어요. 그래서 여러 가지 목적이 있을 수는 있죠.
성능이나 다양한 검증 여러 가지 때문에 사용할 수 있는데 어쨌든 웹 서버는 안 받을 수 있다는 거요.
그러면은 이걸 봤을 때 통신이 안 되나?라고 착각할 수 있지만 그렇지 않다는 거죠.
사실 curl 같은 거를 했을 때는 정상적으로 나오는 걸 볼 수 있어요.
물론 에러가 발생을 하긴 했지만 이 에러 코드 자체도 어쨌든 웹 서버로부터 받은 것이기 때문에 400,500,302,301 뜨는 사실 웹 서버로부터 리스폰스로 받은 거거든요. 그러니까 네트워크 통신은 된 거예요.
그래서 물론 이제 우리가 접근할 때 다른 접근이 필요할 수 있다는 거죠.
보통 이럴 때는 curl 같은 거에 응답을 제대로 안 해 줄 확률이 높습니다.
일반적인 크롬 브라우저 라든지 이런 걸 통해서 접속했을 때는 문제가 없을 수 있어요. 그래서 네이버 쪽에서 그걸 막아둘 수 있는 거죠.
근데 이제 curl 같은 경우에 www.google.com을 하게 되면은 이때는 HTML 코드가 그대로 받아지는 것을 볼 수가 있어요.
그거는 curl을 딱히 막지 않고 그냥 시행이 될 수 있도록 하고 있는 거를 볼 수 있겠고 HTTP 통신 정상적인 통신을 했다라고 볼 수 있습니다.
그래서 이런 차이점이 좀 있어요. 그래서 여러분들이 curl, ping 을 사용 하더라도 내가 어떤 상황이냐에 대해서 안 된다라고 착각할 수도 있기 때문에 같이 한 번 말씀을 좀 드려 봤습니다.
그 다음에 네트워크 동작이 가능하다는 걸 보고 나서 우리가 또 두 번째로 할 수 있는 것은 네트워크 IP 주소를 확인하는 방법입니다.
IP 주소 확인하는 거 일단 기본적인 것부터 보죠.
ip addr show하게 되면요 인터페이스들 그러니까 네트워크 이제 가상의 네트워크 인터페이스 들도 있고요.
이건 루프 인터페이스 라고 내부적으로만 쓰게 되는 보통 127.0.0.1이라고 해서 ip address할당 받게 되는 내부 로컬 인터페이스 라고 볼 수가 있겠고요.
보통은 네트워크 인터페이스는 우리가 실제 물리적인 서버를 봤을 때 랜선 꼽으면 그게 네트워크 인터페스트가 생성이 됩니다. 그렇게 이해하실 수가 있거든요. 이것도 마찬가지죠. etho에 해당되는 게 랜선 꼽아서 생성이 된 거라고 볼 수가 있겠고, 무선 일 수도 있죠.
근데 어찌 됐든 이렇게 ip address 10.0.2.15로 할당이 되어 있는 걸 볼 수 있습니다.
이거는 이제 가상 머신이다 보니까 여기서 따로 할당을 받아서 10 대역 대로 IP address를 할당을 받은 거라고 볼 수 있겠고요.
이와 같은 경우에는 이제 사설 망 IP 대역 대입니다.
물론 C 클래스 처럼 192.168. 대역 대는 아니지만 A클래스의 사설 망 대역 대라고 볼 수가 있겠습니다.
그래서 어쨌든 이렇게 할당을 받았다라고 볼 수가 있겠고요. IP 주소를 확인할 수 있는 다른 방법도 한 번 보도록 할게요.
그게 뭐냐면 dnf install -y net-tools를 받아서 한 번 설치를 해 볼 거예요.
net-tools를 설치 하시게 되면 ifconfig 라는 명령을 할 수 있어요.
ifconfig 는 조금 좀 더 오래된 명령어긴 하죠.
그렇긴 하고 또 많은 사람들이 쓰죠.
또 윈도우에서 IP config 라는 것도 많이 사용하게 되는데 네트워크 IP 주소만 확인한다면 Iifconfig도 충분히 사용할 수는 있습니다.
그래서 ifconfig이 라는 명령을 했을 때 이렇게 eth0 여기에 해당되는 IP address를 깔끔하게 확인하실 수 있는 거를 또 볼 수가 있어요.
그래서 내가 쓰고 있는 IP address 확인하는 방법 한 가지만 더 볼까요?
한 가지만 hostname -I 라고 입력하시게 되면은 여기 왼쪽에 보는 것처럼 사용 가능한 IP address 여러 가지가 나올 수가 있겠고요.
그 중에서 내가 지금 사용하고 있는 것도 같이 확인이 가능합니다.
이렇게 해서 IP address 확인하는 것까지 한번 살펴봤고요
그 다음에 속도 측정 한 번 보도록 하겠습니다.
이것도 이제 필수적으로 많이 하는 것 중에 하나죠.
내가 어느 정도 네트워크 쓸 수 있는지 이런 겁니다.
일단은 설치를 위해서 무엇을 볼꺼냐면 dnf install -y epel-release
이제 여기 적어 놓은 것처럼 Extra packages for Enterprise Linux 라고 해서 레드햇 계열의 리눅스에서 받을 수 있는 패키지들 외부 추가적인 패키지들을 받을 수 있는 저장소 입니다.
그래서 이거를 해놔야지 다양하게 예를 들어서 NGINX 라든지 다양한 프로그램들도 같이 설치가 가능해요.
그래서 저장소를 추가하는 게 일단 필요할 수가 있겠고요.
저장소 추가하고 나서 우리가 dnf를 통해서 우리가 받으려고 하는 거는 뭐냐 speedtest-cli 라고 하는 거를 받으려고 합니다.
받고 나서 실행을 하게 되면은 네트워크 속도를 좀 측정을 해 볼 수가 있어요.
그래서 한 번 측정을 한 번 해보도록 하겠습니다.시간은 조금 필요는 하고요.
speedtest-cli 에 이렇게 하시게 되면은 확인을 하는 거를 볼 수가 있어요.
그래서 이 결과를 어쨌든 확인을 해 봐야 되는데 우리가 언제나 그렇듯이 대체제도 같이 봐야 되요.
그래서 네트워크 속도를 측정할 수 있는 또 다른 명령어들이 사실 많이 있는데 그중에서 fast라고 해서 사실상 그 넷플릭스에서 좀 제공해 주고 있는 기능이라고 볼 수 있거든요. 그래서 fast라고 하는 fast.com 웹 사이트도 있지만 fast라는 명령으로 사실 따로 있어요.
그걸 통해서도 한번 네트워크 속도를 측정을 해가지고 좀 제대로 측정이 좀 되는 건가 한 번 비교를 해 볼 예정입니다.
일단은 속도가 나왔어요. 여기 보이시는 것처럼 다운로드 속도가 초당 어느 정도도 나오는지, 업로드 속도가 어느 정도 나오는지를 볼 수는 있는데요.
이거를 보시고 이게 무조건 최대 수치다 라고 생각하시면 안 됩니다.
자 왜 그렇게 생각하시면 안 되냐면.
내가 실제로 그만큼 쓸 수 있다고 하더라도 나하고 통신하는 다른 서버 다른 클라이언트가 대역폭이 제대로 안 나올 수가 있어요.
그렇게 되면은 그 통신 속도만큼 최대치를 쓸 수가 없습니다.
그래서 내가 어떤 환경에 있냐 도 중요하고요. 그리고 나 통신하는 상대방도 어떤 환경이냐 영향을 받을 수가 있어요.
그렇기 때문에 네트워크 속도라고 하는 거는 내가 1G로 뭐 신청해서 네트워크 했는데 왜 그만큼이 안 나와 여러 가지 이슈들이 분명히 있을 수 있거든요.
그래서 그런 부분들을 항상 가늠을 하셔서 보시는 게 좀 중요할 수가 있겠습니다.
자, 두 번째 케이스 한 번 보도록 하죠.
이거는 명령과 좀 길어 가지고 좀 복사를 할게요. 복사를 하고 네 여기다가 붙여 넣기를 했습니다.
wget -O fast https://github.com/ddo/fast/releases/download/v0.0.4/fast_linux_amd64
wget이 없어서 dnf install로받아야 겠습니다.
wget 명령어를 설치를 했고요. 그 다음에 받았습니다. fast 라고 하는 바이너리가 생성 돼요.
그냥 실행하면 실행이 안 되거든요. 왜냐면은 그 실행할 그 권한이 없어 chmod +x 라고 하서 execute(실행) 권한을 주고요
그 다음에 fast 라고 실행을 하시게 되면은 속도 측정이 나오는 거를 또 보실 수 있습니다.
자 아까 같은 경우에 테스트를 했을 때랑 지금 테스트를 했을 때가 또 속도가 다르게 나올 수가 있어요.
분명히 그리고 계속 말씀드리지만 어느 서버랑 통신 하느냐, 어느 클라이언트랑 통신 하냐에 따라라 다를 수 있고, 그리고 내가 통신하는 과정의 네트워크 환경 때문에 내 네트워크 대역폭이 제약이 될 수도 있습니다.
그래서 여러 가지 상황들이 있을 수 있기 때문에 실제로 내가 물리적으로 쓸 수 있는 거를 정말로 측정 하자고 한다면, 네트워크 안에서 사실 측정하면 좀 더 정확하게 측정이 되긴 하겠죠.
그래서 어쨌든 지금은 또 속도가 약간 달라요.
아까 전 같은 경우에는 한 45정도 나왔던 것 같은데요.
여기 보이는 것처럼 여기 측정했을 때 다운로드 속도가 45.04 정도 나왔는데 fast 로 했을 때는 훨씬 더 높은 83.81수치가 나오는 것도 볼 수는 있습니다.
그래서 실제로 지금 네트워크 속도를 측정할 때는 좀 다양한 방법으로 하는 게 좀 중요할 수가 있겠고, 어느 서버랑 하느냐에 따라 속도가 좀 다르게 나올 수 있으니까 이제 최대 속도가 어느 정도인지를 좀 여러 가지로 좀 가늠하는 게 또 필요할 수 있겠습니다.
그 다음에 우리가 포트 번호 활용하는 거에 대해서 한번 보도록 할 거예요.
이건 뭐냐면 어, 우리가 이제 필수 명령어 제가 계속 말씀드리고 있잖아요.
이 지금 명령어를 사실 실질적으로 좀 알고 계시는 게 중요하고요 fast는 사실 모르셔도, 그리고 speedtest-cli같은 경우에는 완전히 뭐 외우지 않는다고 하더라도 크게 문제가 되지는 않지만은 보통 그런 걸 많이 찾기는 해요.
내가 어느 정도 속도를 낼 수 있는지 그래서 이제 좀 필수에다 넣어 놨고요.
정말 정말 필수인 게 ifconfig 나 IP address,ping, curl 이런 것도 정말 필수죠.
근데 그 중에 하나가 netstat 입니다.
이거는 정말 외워야 돼 정말 외우셔야 되고 많이 쳐봐야 돼요.
자, 입력해 보도록 할게요.
일단은 -t 자 보시면 옵션 설명 여기다가 적어 놓기는 했는데요.
-t 는 뭐냐? TCP 통신으로 되어 있는 것들을 살펴 보겠다는 겁니다.
보통 TCP 를 많이 쓰거든요 웹 통신도 TCP를 사용해서 쓰는 거기 때문에 TCP 로 많이 보고요.
-p 를 하게 되면은 프로그램, 프로세스에 대한 정보까지도 보입니다.
만약에 이걸 안 나오면 프로세스 아이디 PID 정보 같은 것들을 잘 못 봐요.
그러니까 예를 들어서 네트워크 어느 주소를 어느 포트로 사용하고 있는지 이런 것들에 대해서 어떤 프로세스가 하고 있는지를 보기가 힘들다는 거죠.
그 다음에 -l로 하게 되면은 리스닝 중인 상태도 다 보는 거예요.
만약에 -l 을 없애면 어떤 것들을만 보느냐 이렇게 ESTABLISH 상태인 것만 보거든요. 그래서 -l 로 하면은 LISTEN 상태인 거를 보는 건데, LISTEN 이든 뭐든 다 보고 싶으면 -a 를 넣으시면 돼요
그렇게 되면은 ESTABLISH 상태나 LISTEN 상태 이런 것들을 모아서 볼 수가 있겠고 -n 을 안 하시면 이런 식으로 포트 번호(예: 22)가 문자(예: ssh) 로 나와요.
SSC 기본 포트 뭐죠? 22번 그렇죠. 외워야 되는 포트 번호 있다라고 항상 말씀드리는데 HTTPS 기본포트번호 443 HTTP 기본포트번호 80 그리고SSH 기본포트번호 22번 이러 거 꼭 외우셔야 되고요.
n으로 하게 되면 넘버라고 해서 예를 들어서 도메인 주소로 되 있다던가 그리고 포트 번호 같은 경우에도 기본 포트 같은 경우에는 이게 문자열 나오는 경우들이 있어요.
그래서 그런 것들을 넘버리 이라고 해서 숫자로 보여줄 때 n 옵션을 쓸 수가 있겠습니다.
이런 식으로 해서 옵션을 쭉 입력을 해서 보시게 되면은 지금 현재 포트 번호 쓰고 있는 것들 추적할 수가 있거든요.
그래서 만약에 내가 여기서 grep으로 22번 SSH 22번 쓰고 있구나.
근데 만약에 내가 웹 서버를 켜 놨다 면 또 80으로도 조회가 되죠.
물론 여기서는 80으로 끝나는 거지 80포트를 쓰고 있는 건 아니죠.
그래서 뭐 nginx나 Apache웹 서버에 httpd 이런 것들을 설치 하시게 되면은 또 80포트 쓰고 있는 것들도 확인하실 수 는 있습니다.
그래서 보통 포트 번호 문제가 생기거나 뭐 이랬을 때 netstat 많이 쓰기 때문에 netstat는 정말로 많이 입력해 보셔야 되는 명령어 중에 하나예요.
자, 여기까지 해가지고요 우리가 필수적으로 다뤄야 되는 네트워크 명령어를 간략하게 좀 알아봤습니다.
이 밖에도 많이 있겠지만 필수적인 것만 조금 꼽아 봤고요.
이번 영상도 많이 도움이 되셨으면 좋겠고요.
다음 영상에서도 좋은 영상들도 한번 인사를 좀 드려보도록 하겠습니다.
예, 감사합니다.
관련 리얼리눅스 영상은 도커/K8s/클라우드(AWS) 네트워크 완전 정복입니다.
https://reallinux.co.kr/course/se_network