favicon Jay Lee DevLog

📚 목차

오늘은 네트워크 관련된 명령어들을 정리하려 한다.

뭔가 구축할 때 잠깐 쓰고,

이후에 문제가 생길때 까진 딱히 쓸 일이 없는 경우가 많아서

자꾸 까먹는 바람에 여기다 다 모아두려 한다.


1. netstat

netstate는 현재 네트워크의 상태와 정보를 보기 위해 사용하는 명령어다.

나는 주로 내가 만든 프로그램의 포트가 잘 열려있는지,

연결이 안되는 경우에 현재 포트 상태가 어떻게 되어 있는지 등을

확인할 때 사용한다.

우선 사용법부터 알아보면

netstat [option] [| grep 포트 or 서비스명]

간단하게 옵션부터 정리해보자.

-l state가 listen인 경우
-n port number
-t tcp
-u udp
-p 소켓의 PID, Program name 출력
-a 모든 소켓 출력
-i 이더넷 별 송수신 패킷 수 확인
-r 라우팅 테이블 확인
-s 네트워크 통계

대강 이정도가 자주 사용하는 옵션인 것 같다.

옵션을 포함해서 자주 사용하는 netstat 명령은

netstat -an | grep 특정포트 특정 port의 현재 상태를 확인
netstat -nlpt Listen 상태의 TCP 내용 출력
netstat -nlpu Listen 상태의 UDP 내용 출력

이정도를 제일 많이 쓰는 것 같다.

 

이렇게 netstat 명령어로 현재 상태를 알아보는 이유는

뭔가 연결이 정상적으로 진행되지 않음을 뜻한다.

그럼 다음으로 확인해보는게 바로 iptables이나 firewall이다.


2. iptables

정확한 의미는 인터넷에 많이 나오니 찾아보길 바라고, 내가 정리할 내용은 필터일 정책에 관한 내용이다.

주로 port가 열려 있는걸 netstat로 확인했으나 연결이 잘 되지 않을때 이녀석이 원인인 경우가 많다.

대부분 설치가 되어 있을 것 같은데,

rpm -qa | grep iptables

입력해서 아무것도 안나오면,

yum install iptables -y

로 설치하면 된다.

막상 iptables를 정리하려하니, 옵션도 너무 많고 설명할게 방대해서 그냥 내가 자주 쓰는 것만 정리하겠다.

iptables -P INPUT ACCEPT 기본 정책을 ACCEPT로 설정
iptables -F 정의된 모든 규칙 삭제
iptables -A INPUT -p tcp -m tcp --dport 포트번호 -j ACCEPT INPUT체인에 TCP 패킷 중 포트번호로 들어오는 패킷을 허용하도록 변경
iptables -D INPUT -p tcp -m tcp --dport 포트번호 -j ACCEPT 위 항목의 내용을 삭제
iptables -nL 현재 테이블 내용 확인
iptables -A INPUT -i 인터페이스 -j ACCEPT 해당 인터페이스의 모든 패킷을 허용
iptables -A INPUT -s IP주소 -j ACCEPT 해당 IP의 모든 패킷을 허용
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT 특정 IP 대역의 모든 패킷을 허용
iptables -A INPUT -m mac --mac-source mac주소 -j ACCEPT 특정 mac주소에 대한 모든 패킷을 허용
iptables -A INPUT -p tcp --dport 8888:9999 -j ACCEPT 특정 포트 범위에 대한 모든 패킷을 허용

이정도인 것 같다.

iptables은 사용자에 따른 사용 방법이 워낙 많기 때문에,

본인에게 필요한 상황을 찾고 거기에 맞는 커맨드를 실행해야 한다.

 

이제 iptables와 같은 기능을 하는

firewall-cmd에 대해 알아보자.


3. firewall-cmd

위에서 내가 iptables와 firewall-cmd가 같은 기능이라고 했는데, 아래의 표를 보면 알 수 있다.

OS ~ CentOS 6 CentOS 7 CentOS 8 ~
방화벽 설정 도구 iptables Firewalld Firewalld
방화벽 기능 iptables iptables nftables

방화벽 기능은 iptables가 하지만,

centos7부터 설정은 firewalld가 하고 있고,

firewalld를 설정하기 위해 사용하는 커맨드가 firewall-cmd 이기 때문이다.

 

실제로 iptables은 명령어도 길고 복잡한 반면에

그에 비하면 firewall-cmd는 비교적 간단하다.

그럼 firewall-cmd에 대해 명령어에 대해 알아보자.

일단 실행은

systemctl start firewalld 이다.

firewall-cmd --list public zone에 관한 방화벽 내용을 보여준다.
firewall-cmd --list-zones 모든 zone에 대한 방화벽 내용을 보여준다.
firewall-cmd --permanent --new-zone=zonename 새로운 zonename을 영구적으로 추가한다.
firewall-cmd --permanent --delete-zone=zonename zonename을 영구적으로 삭제한다.
firewall-cmd --permanent --zone=zonename --add-port=포트번호/tcp zonename에 tcp 포트번호 허용 정책 추가
firewall-cmd --permanent --zone=zonename --add-port=8888-9999/tcp zonename에 tcp 8888~9999 허용 정책 추가
firewall-cmd --permanent --zone=zonename --remove-port=포트번호/tcp zonename에 tcp 포트번호 허용 정책 삭제

설정을 마친 후

firewall-cmd --reload

를 입력해야 적용된다.

 

'Linux > 명령어' 카테고리의 다른 글

글자가 깨질때, Locale 명령어  (0) 2023.11.10
맨날 까먹는 명령어 모음  (0) 2023.09.13
SecureCopy(scp) 명령어  (1) 2023.08.31
Linux용 그림판 설치 방법  (0) 2023.08.30
rpm  (0) 2023.08.07

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.