개발 Q&A

제목 서버 간 소켓 통신할 때 막히는 부분이 있어 질문드리고 싶습니다.
카테고리 서버
글쓴이 노가식 작성시각 2021/07/16 16:20:42
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 6896   RSS

안녕하세요. 소켓 통신 관련 코드 짜고 있는 중에 막히는 부분이 있어 질문 올렸습니다.

지금 제가 다루고 있는 서버 환경은 총 세 곳입니다. 하나는 제 노트북 우분투 환경이고, 나머지 두 곳은 네이버 클라우드로 받은 서버에요. (각각을 A, B, C 서버라고 하겠습니다.) 현재 A, B 서버의 php파일에서 소켓으로 정보를 보내서, C 서버의 파이썬 파일로 받고 있는데요.

A 서버에서 보낼 때는 포트 번호를 아무거나 지정해도 C 서버로 받을 수 있는데, B 서버에서 보낼 때는 특정 포트 번호로 해야만 C 서버가 받을 수 있습니다.

B 서버에서도 여러 포트 번호로 통신을 하고 싶은데, 어떻게 해야할까요? 어디서 문제가 발생한 것인지 도저히 모르겠습니다 ㅠㅠ 도와주세요!

 다음글 phpsocket이나 ratchet으로 1:1채팅 문의... (1)
 이전글 php세션(코드이그나이터) 과 node.js 세션을 공... (4)

댓글

변종원(웅파) / 2021/07/16 16:28:46 / 추천 0

b 서버의 outbound 포트가 제한되어 있는지 확인해보세요.

방화벽에서 막아놨을 수도 있으니 서버에서 b 열려있는 포트 확인.

노가식 / 2021/07/19 16:31:59 / 추천 0

댓글 감사합니다.

b 서버의 방화벽을 아래 명령어로 확인해보았으나, 모두 inactive 였습니다.

service iptables status, ufw status,  service firewalld status

 

계속해서 다른 방식으로 원인을 찾아보려 하고 있으나, 발견하지 못했습니다.

리눅스 hping3을 이용해서, TCP 패킷을 보내봤더니 마찬가지로,

A -> C는 가능한데, B -> C는 안되네요. 

도대체 원인이 무엇인지 궁금합니다.

노가식 / 2021/07/19 16:36:03 / 추천 0
또, hping3으로 확인해보았을 때, B서버에서 ICMP프로토콜을 이용하면 B->C 간 통신이 되더군요. TCP 통신 패킷만 전달이 안됩니다.