Netty TCP 서버가 있고 원격 주소를 기반으로 선택적으로 들어오는 연결 시도를 거부하거나 거부하고 싶습니다. 내가 ServerBootstrap.setParentHandler(ChannelHandler)
을 사용해야한다고 생각하지만, ChannelHandler
에서 무엇을해야합니까? 어떤 사건을 처리합니까? 어떻게 연결을 거부합니까?Netty에서 들어오는 연결을 거부하는 방법은 무엇입니까?
답변
Norman이 말한 것처럼 연결을 거부 할 방법은 없지만 첫 번째 처리기로 Netty의 IpFilterHandler를 서버 파이프 라인에 추가하면 즉시 닫을 수 있습니다. 또한 필터링 된 연결에 대한 업스트림 채널 상태 이벤트 전파를 중지합니다.
@ChannelHandler.Sharable
public class MyFilterHandler extends IpFilteringHandlerImpl {
private final Set<InetSocketAddress> deniedRemoteAddress;
public MyFilterHandler(Set<InetSocketAddress> deniedRemoteAddress) {
this.deniedRemoteAddress = deniedRemoteAddress;
}
@Override
protected boolean accept(ChannelHandlerContext ctx, ChannelEvent e, InetSocketAddress inetSocketAddress) throws Exception {
return !deniedRemoteAddress.contains(inetSocketAddress);
}
}
차단하는 IP 주소의 패턴의 목록이있는 경우, 당신은 IpFilterRuleHandler를 사용할 수
//Example: allow only localhost:
new IPFilterRuleHandler().addAll(new IpFilterRuleList("+n:localhost, -n:*"))
네트워크 인터페이스가 여러 개인 경우 하나의 인터페이스에서 연결을 허용하려면 ServerBootstrap
에 로컬 주소 만 설정하면됩니다. 서버가 여러 네트워크에 연결된 시스템에서 실행 중이며 둘 중 하나만 제공하려는 경우이 방법으로 충분할 수 있습니다. 이 경우 다른 네트워크로부터의 연결 시도는 OS에 의해 거부됩니다.
응용 프로그램 계층에 연결되면 해당 응용 프로그램 계층을 거부하기에는 너무 늦습니다. 당신이 할 수있는 최선은 바로 그것을 닫는 것입니다.
예를 들어 로컬 호스트에서만 서버를 사용할 수 있고 바깥 세상에서는 보이지 않게하려면 루프백 네트워크 127.0.0.0/8에 별도의 인터페이스가 제공됩니다.
Netty 소스에서 org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink
을보고 난 후에 Netty가 들어오는 모든 연결을 허용하고 거부 할 수있는 방법이 없다는 사실을 확신합니다 (물론 받아 들일 수는 있지만 닫을 수는 있습니다).
내가 아는 한, 소켓 API 레벨로부터 선택적으로 포트로 들어오는 연결을 거절 할 수있는 방법이 없다. 아마도 iptables 또는 비슷한 것을 구성해야합니다. – trustin
- 1. 들어오는 연결을 거부하는 방법?
- 2. 소켓이 연결을 거부하는 이유는 무엇입니까?
- 3. 특정 주소에서 들어오는 연결을 차단하는 방법은 무엇입니까?
- 4. 모든 브라우저에서 연결을 거부하는 Webscarab
- 5. 들어오는 연결을 확인하는 방법은 로컬 컴퓨터에서입니다.
- 6. .NET에서 스레드를 통해 tcplistener 들어오는 연결을 분산시키는 방법은 무엇입니까?
- 7. 들어오는 연결을 허용하도록 websocket 서버에 지시하는 방법은 무엇입니까?
- 8. CAS로 Assert를 거부하는 방법은 무엇입니까?
- 9. netty에서 다른 처리기로 이벤트를 보내는 방법은 무엇입니까?
- 10. 원격 사용자에 대한 연결을 거부하는 hbase
- 11. Netty에서 WSDL 사용
- 12. Tomcat이 내 다른 서버의 연결을 거부하는 이유는 무엇입니까?
- 13. 들어오는 대역폭을 줄이는 방법은 무엇입니까?
- 14. 들어오는 연결을 모두 허용하도록 PostgreSQL을 구성하는 방법
- 15. Erlang은 들어오는 TCP 연결을 동적으로 수락합니다.
- 16. Python을 사용하여 Linux에서 들어오는 모든 연결을 나열합니다.
- 17. VirtualBox 내부의 서버에 들어오는 연결을 어떻게 허용합니까?
- 18. 내 모뎀에서 들어오는 연결을 검색하는 방법
- 19. [AllowHtml]하지만 스크립트를 거부하는 방법은 무엇입니까?
- 20. PayPal IPN을 통한 결제를 거부하는 방법은 무엇입니까?
- 21. 서비스에 대한 액세스를 거부하는 방법은 무엇입니까?
- 22. 테이블에서 사용자 입력을 시각적으로 거부하는 방법은 무엇입니까?
- 23. geckofx에서 열려있는 새 창을 거부하는 방법은 무엇입니까?
- 24. 특정 IP를 Java 서버에서 거부하는 방법
- 25. 연결을 닫고 연결을 urllib2와 재사용하는 방법은 무엇입니까?
- 26. 사용자 정의 된 log4j.xml을 사용하여 netty에서 로거를 구성하는 방법은 무엇입니까?
- 27. Netty에서 프로그래밍 방식으로 채널 플러시
- 28. 포트에서 들어오는 패킷을 수신하는 방법은 무엇입니까?
- 29. 실제 장치에서 들어오는 호출을 시뮬레이트하는 방법은 무엇입니까?
- 30. 들어오는 이메일의 발신자를 확인하는 방법은 무엇입니까?
오른쪽. 그러나 Netty에서 연결을 거부 할 수있는 방법이 없을까요? (다시 말하지만,'ServerBootstrap.setParentHandler()'와 관련이있다) – pron
여러 개의 네트워크 인터페이스를 가지고 있다면 하나만 바인드하고 다른 하나는 OS가 다른 커넥션을 거절 할 수 있음을주의해서 편집했다. – Joni