* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window10 64bits |
|
cubrid 11.3 (11.3.2.1187) |
|
cubrid admin 11.1.3.0194 |
|
현재 설치 후 외부 호스트에서 연결만 진행 중 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요
외부 호스트에서 DB 서버 접속 시 [-21024] Request timed out[CAS INFO-(공인ip):(외부port),0],[SESSION-0],... 에러가 발생합니다.
윈도우 환경에서 설치 프로그램을 사용해 기본 설정으로 설치하였습니다.
윈도우 방화벽 포트 개방 완료하였습니다. 매뉴얼의 포트 설정 참고하여, 지정해주신 프로그램 목록에 대한 inbound, outbound 방화벽 허용하였습니다.
매니저 프로그램은 외부에서 사용하지 않을거라 생략했습니다.
(cub_broker.exe, cub_cas.exe, cub_master.exe, cub_server.exe)
공유기 포트포워딩 완료하였고(53300-33000, 53000-30000)
외부 호스트(mac)에서 tcping (공인ip) 53300, 53000 테스트하였을 때, 두 포트가 오픈되었음도 확인하였습니다.
로컬에서 큐브리드 admin 으로 서버 정상 작동함을 확인하였습니다. 로컬에서 localhost:30000 으로 데이터베이스도 잘 접속이 됩니다.
DB 서버와 같은 내부망으로 (사설ip):30000 테스트해보았을 때도 접속 됨을 확인하였습니다.
그런데 외부망에서 (공인ip):53000 접속 테스트를 하니 request timed out 이 발생하네요.
무엇을 더 확인해보아야 할까요?
Windows CUBRID에서의 broker-cas 접속 환경은 Linux와 다릅니다.
1. 최초 client가 Windows broker에 접속하면 (예: 33000), broker는 CAS에 접속가능한 port 번호를 client에 전달합니다 (33001, 33002, 33003, ...).
2. client가 CAS 접속을 위한 port번호를 전달 받으면 (예: 33001), 현재의 tcp 연결을 끊고 33001로 접속을 시도합니다 (CAS)
이런 이유 때문에 WIndows CUBRID에서 시도하신것과 같이 port forwarding을 이용해서 CUBRID에 접속하기는 어려울듯 합니다.
포트 포워딩을
외부 ip: 30000 -> 내부 ip:30000
외부 ip: 30001 -> 내부 ip:30001
외부 ip: 30002 -> 내부 ip:30002
형태로 하셔야할 듯합니다. 왜냐하면 Windows broker가 cas 연결을 위해서 30001 을 전달하고
그러면 client가 외부ip:30001로 연결을 시도할 것이기 때문입니다.
---
Windows에서 사용하신다면 30,000 ~ 30,040 33,000 ~ 33,040 (만약 브로커당 최대 40개 CAS를 사용한다면) 포트를 개방해야하고
포트 mapping을 위와 같이 30,000, 30,001, ... 형태로 그대로 사용하셔야 할듯 합니다.
---
Linux 경우는 좀 다릅니다. Linux는 최초 30,000 포트로 broker에 접속하면 이 tcp connection을
그대로 CAS에 전달합니다. 따라서 Linux CUBRID는 경우는 위와 같이 30,000/33,000 포트만
개방하고 포트 포워딩을 하셔도 될듯합니다.