ysuekkom의 IT study note

[linux 기초] 명령어편 - 네트워크 관련 본문

OS/linux

[linux 기초] 명령어편 - 네트워크 관련

ysuekkom 2022. 10. 13. 21:50

[linux 기초] 명령어편 - 네트워크 관련 //개인 공부를 위한 기록용으로 일부 과거 자료 이전

 

리눅스는 운영 체제의 한 종류로, 커널에 기반을 둔 오픈소스 유닉스 계열이다.

작업 내역을 쉘 스크립트로 작성 후 검토, 새벽시간 적용하거나

네트워크 상태, 파일 및 계정 접근 권한 등등 실제 네트워크를 운용할 때  필수적으로 익혀야하는 명령어에 대해 정리해보려고 한다.

 

>명령어

ifconfig(InterFace CONFIGuration): 네트워크인터페이스의 활성/비활성화 및 설정

>ifconfig

>ifconfig eth0

 

ip: ip관련 정보 조회 및 설정

>ip address show

>ip address show eth0

>ip ad sh eth0

 

>ls -al /etc/sysconfig/network-scripts/

>cat /etc/redhat-release

CentOS Linux release 8.4.2105

 

netstat(NETwork STATistics): 네트워크 프로토콜의 통계와 연결상태를 확인

 실무에서 자주쓰는 옵션 두 가지

1.  -nltpu  서버가 열고있는 포트와 프로그램을 확인하는 옵션

>netstat -nltpu (LISTEN 상태, 옵션에서 u를 빼면 udp빼고 tcp만 볼 수 있음

 

옵션확인 : -nltpu

-n: 정의한 이름이나 도메인이름을 빼고 ip port를 숫자로 보여주는 옵션(특성 서비스의 지정된port가 숫자가 아닌 서비스로 나타남)

    서비스에 대한 정의는 vi /etc/services에서 확인 가능함

-l: listening의 약자로 LISTEN상태의 소켓을 보여줌

    서버는 특정 포트를 열어두고 유저를 기다림 == LISTEN

-t: TCP통신

-p: 프로그램의 이름

-u UDP통신

 

2. -tanu  현재 네트워크의 전체 상태를 보여줌

 클라이언트가 몇 개 붙어있는지(LISTEN/ESTABLISHED) 등등

 접속자가 많을 경우, ESTABLISHED 세션을 파일로 저장해서 보는 경우도 많음

 명령어의 결과를 파일로 저장하는 경우 > 추후 강의에서 다룸

 

ss(Socket Statistics): 네트워크 소켓의 통계와 연결상태를 출력, netstat와 옵션 같음

 -nltpu

 -tanu

 

 

iptables : 패킷 필터링 도구로 패킷의 출입을 제한하는 방화벽구성이나 NAT(Network Address Translation)구성에 사용

 아주 오래된 방화벽 구성

 

>iptables -nL

>systemctl status iptables 로 확인 할 수 있음

not found 확인

>cat /etc/sysconfig/network-scripts/ifcfg-enp0s3

 centos에서 연결된 인터페이스는 enp0s3으로 인식되기 때문에 enp0s3 ip가 자동할당 되어야 정상.

ONBOOT=no --> 연결 안되어있음

>ifup enp0s3

연결이 성공적으로 활성화 되었습니다(D-버스 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/3)

>ifconfig

할당 확인, ifup은 단발성으로 재부팅 시, 다시 원래상태로 돌아와 통신이 되지 않음

--> vi 이용 ONBOOT=no -> yes로 변경

>vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

여전히 안됨

>systemctl status iptables 로 확인 할 수 있음

not found 확인

 

<해결하기>

1. firewalld 정지점 및 마스킹하기.

2. iptables-sevice pakage 장착하기.

3. 서비스 활성화하기 ( >systemctl stop|start|stop] iptables)

4. 방화벽규칙 저장 (>/usr/libexec/iptables/iptables.init save)

 

>systemctl stop firewalld

>systemctl mask firewalld

Created symlink /etc/systemd/system/firewalld.service -> /dev/null.

>yum install iptables-services

마지막 메타 데이터 만료 확인 :2: 09:15. 2021 10 15() 오전 4 53 44초 이전에 확인

종속성이 해결되었습니다.

==========================================================

패키지                 아키텍처                버전                리포지터리         크기

설치중:

iptables-services        x86_64                1.8.4-17.el8        baseos                62k

트랜잭션요약

==========================================================

설치 1패키지

총 다운로드 크기: 62k

설치된크기: 20k

정말입니까 [y/N]: y

패키지 다운로드 중:

iptables-services-1.8.4.17.el8.26_64.rpm                536 kB/s  |  62  kB                0:00

---------------------------------------------------------------------------------------------------

합계                                         74 kB/s   |  62  kB                 0:00

 

.

.

.

 

출처         : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

.

.

.

설치됨:

   iptables-services-1.8.4-17.el8.x86_64

완료되었습니다!

>systemctl enable iptables

>service iptabels save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[   OK   ]

 

<다시 확인하기>

>systemctl status iptables

Active: inactive (dead)

>systemctl start iptabels

>systemctl status iptables

Loaded:  loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: d>)

Active:  active (exited)

 

 

>iptales -nL

Chain INPUT : 외부에서 이 서버에 들어오는 통신에 적용하는 룰

>다 막고 필요한 port/ip만 열어두는게 기본 정책

Chain FORWARD: 이 서버를 경유하는 통신에 적용하는 룰

>각 회사의 방화벽 정책마다 다름

Chain OUTPUT: 이 서버에서 외부로 나가는 통신에 적용하는 룰

>각 회사의 방화벽 정책마다 다름(특정 port/ip에 한해 설정하는게 대부분)

 

 

ufw(Uncomplicated FireWall): iptable의 제어를 쉽게 하기 위한 도구

 

ping: ICMP 프로토콜의 응답확인도구

        internet control message protocol

통신을 위해 패킷을 주고받을 때 약속된 룰로 주고받음 > 약속된 룰: 프로토콜

 -c: count 옵션

>ping -c 카운트횟수 서버이름

 

 

weget(World wide web + GET): 웹 서버로부터 컨텐츠를 가져오는 도구

  웹주소로 자료를 다운로드 할 때 사용함

  설치파일을 다운로드 받을 때 사용

  소스를 받아 컴파일 설치하고싶을 때, 링크 카피 후 터미널에서 다운로드

https://openresty.org/en/download.html

Source Code Releases > Lastest release 우클릭 링크주소 복사 >터미널 붙여넣기 >다운로드 완료

 

 

curl(Client for URLs) : 다양한 프로토콜을 사용하여 데이터를 전송하게 해 주는 도구

>ping gmail.com

>curl -Lkso /dev/null -w "%{http_code}\n" https://gmail.com

200

 

 

 옵션

-L: 리다이렉트 링크를 따라가는 옵션

>>HTML에서 301 리다이렉션을 의미함

>curl -L https://gamil.com

링크를 따라가는 소스가 나옴

 

-k: http 인증은 확인하지 않는다

-s: silent모드, curl 실행하면 통계값이 나오는데 그걸 실행하지 말라, s 빼면 통계값 나옴

-o: 아웃풋 파일 지정 /dev/null 지정한 . /dev 하위에 여러 장치파일이 있음

>>null 아무것도 없는 상태를 나타내는 파일, 출력값을 /dev/null 보내면 출력파일을 만들지 않겠다는 .

-w: 아웃풋 포맷 결정: http코드만 출력하게 설정

 

>>curl 옵션 접속할 URL

 

 

route: 네트워크의 경로정보(라우팅테이블) 출력, 변경하는 도구

Genmask: 목적지 네트워크의 넷마스크 주소(0.0.0.0 게이트웨이)

Flags: 해당 경로에 대한 정보를 알려줌. H 목적지가 호스트, G 게이트웨이를 향하는 경로, U 살아있음.

Metric: 목적지 네트워크까지의 거리

Ref: 경로를 참조한 횟수

Use: 경로를 탐색한 횟수

 

>route -n

다른 도메인 네임이나 설정한 이름을 숫자로 바꾸어줌

 

>route add 라우트 설정

>route del 라우트 경로 삭제