[linux] 서버에 간단 포트 열기(테스트용)

제목으론 설명이 조금 부실한데, 클라이언트에서 서버에 통신이 되는지 확인하기 위해, 간단히 포트를 여는 내용을 다루고자 한다.

들어가며

먼저, 왜 이런 글을 쓰게 됐냐면, 회사에서 서버 세팅을 해놨다. IP할당과 방화벽 설정까지 끝내놓았으나, 어플리케이션 설치 직전에 사정이 있어서 서버 IP대역을 바꾸게 됐다.

어플리케이션 설치를 하기 전에 방화벽 설정도 변경하고 진행해야하나, 방화벽 담당자가 오늘 부재인 상황. 설치는 가능할까? 설치를 완료해도 방화벽에서 막진 않을까..? 하는 생각이 당연히 들었고, 확실한건 어플리케이션을 설치하고나서 서비스 포트가 정상작동하면 끝! 이나.. 시작하기 전에 한번 확인해보고픈 생각이 들었다.

간단히 웹서버를 포트 변경해서 띄울까 생각도 했는데.. 웹서버 설치하는것도 귀찮고.. 그냥 간단한 명령어가 있으면 좋겠는데.. 하고 검색. 역시나 답은 있다.

방법1. netcat (nc) 사용 – 가장 간단

서버단에서

예를 들면 80 포트를 리슨하고 싶으면 다음과 같이 쓴다.

# nc -c -p 80

배포판에 따라 다음과 같이 써야 할 수도 있다.

# nc -lvnp 80

확인 방법(클라이언트)

# nc -zv [서버IP] 80

또는 가장 익숙한 telnet 으로

# telnet [서버IP] 80

방법2. Pyhon 내장 HTTP 서버 사용 (추천)

Python이 설치되어있어야 하나, 요즘은 기본설치 되어있는 경우가 많다.

80 포트로 임시 웹서버 실행

# python3 -m http.server 80

외부에서

# curl http://[서버IP]

방법3. socat 사용

설치되어있다면

# socat TCP-LISTEN:80,fork

중요한 점

앞에 설명을 빼먹은게 있는데, 주의할 점이 있다. 위에 예를 든 80 포트는 root권한이 필요하다.
1024포트 미만은 privileged port 라서 다음과 같이 실행해 주어야 한다.

# sudo python3 -m http.server 80

또는

# su -
# python3 -m http.server 80

추가로. 방화벽 점검 테스트

포트가 안 열리면 아래 순서대로 확인합니다.

1. 프로세스 리슨 여부

# ss -tulnp | grep :80

2. OS 방화벽

firewalld

# firewall-cmd --list-all

ufw

# ufw status

정리하면

나는 제일 간단하게 nc를 사용했다.

# nc -l -p [원하는포트]

하면 해당 포트를 리슨하게 되고, 외부에서는 telnet 같은걸로 확인하면 된다.
막혀있으면, 서버방화벽, 혹은 방화벽 장비쪽 정책을 확인해보길.
포트가 1024이하면 root권한이 필요한 점도 염두해 두자.

Loading