java-apns를 사용하여 iPhone 앱에 푸시 알림을 보내려는 방화벽 서버에서 실행되는 Java 프로그램이 있습니다. 문제는 알림을 보내려고 할 때마다 라이브러리가 APNS 서버에 연결하지 못한다는 것입니다. 스택 추적에 따르면 필요한 SSL 연결을 생성할 때 어느 시점에서 연결이 거부되는 것 같습니다( java.net.ConnectException
라이브러리가 SSLSocketFactory
의 createSocket
메서드를 호출할 때 "연결 거부"라는 세부 메시지가 표시됩니다).
방화벽이 연결을 차단한다고 해도 전혀 놀랄 일이 아니지만, 안타깝게도 제가 서버를 관리하지 않기 때문에 실제로 그런 것인지 확인할 수 없습니다. 프로그램이 방화벽이 없는 내 데스크톱에서 제대로 작동한다는 사실이 이 이론을 뒷받침하는 것 같습니다.
내 질문은 문제의 근본 원인을 찾을 수 있는 방법을 아는 사람이 있습니까? 그리고/또는 서버 관리자에게 작업을 수행하기 위해 무엇을 변경해야 하는지 말해 줄 수 있는 사람이 있습니까(실제로 방화벽인 경우). 그것이 문제이다)? 이러한 사항에 대한 저의 이해는 약간 제한되어 있지만 포트 2195(APNS 서버에서 사용하는 포트)에서 나가는 연결을 차단 해제하는 것만큼 간단해야 합니다. 그렇죠?
참고로 서버는 리눅스 박스이고 java-apns 0.1.2 버전을 사용하고 있습니다.
답변1
글쎄, 당신은 그 / 그녀에게 나가는 포트 2195의 차단을 해제하도록 요청하는 것부터 시작해야합니다.
예는 다음과 같습니다.
iptables -A OUTPUT -o eth0 -p tcp --dport 2195 -j ACCEPT
위의 내용은 eth0
외부 인터넷 연결 인터페이스라고 가정합니다.
수신 라인을 추가해야 할 수도 있습니다(소스가 반대쪽 끝에 있는 포트 2195라고 가정).
iptables -A INPUT -i eth0 -p tcp --sport 2195 -j ACCEPT
반환 통신을 위한 소스 포트가 무작위로 지정된 경우 iptables의 상태 모듈을 사용하여 연결을 추적해야 합니다.
iptables -A OUTPUT -o eth0 -p tcp --dport 2195 \
-m state --state NEW, ESTABLISHED, RELATED \
-j ACCEPT
iptables -A INPUT -i eth0 -p tcp \
-m state --state ESTABLISHED, RELATED \
-j ACCEPT
그것은 매우 기본적인 것입니다. 이런 일에 대한 책임은 귀하가 아닌 관리자에게 있으므로 위 사항의 수정이 필요할 가능성이 높습니다. HTH.