【发布时间】:2022-04-07 14:39:30
【问题描述】:
我正在尝试使用 Netty 创建一个 SOCKS 代理实现,我需要丢弃来自未知主机/IP 的数据包。如果从未知主机收到的数据包应该丢弃它并且不发送任何数据包作为响应,它应该像防火墙一样工作。
IpFilterRule[] rules = new IpFilterRule[2];
rules[0] = new IpSubnetFilterRule("127.0.0.1", 8, IpFilterRuleType.ACCEPT);
rules[1] = new IpSubnetFilterRule("127.0.0.1", 0, IpFilterRuleType.REJECT);
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(boss, worker)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG, 1024)
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addFirst(ipFilter);
ch.pipeline().addLast(new IdleStateHandler(3, 30, 0));
ch.pipeline().addLast(new ProxyIdleHandler());
// some socks channel pipeline initialization
}
});
编辑 1:将 IP 过滤器添加到通道管道后,我仍然可以看到来自 Netty 代理服务器 192.168.56.1 的 SYN ACK 响应和 FIN ACK、RST ACK 数据包
【问题讨论】: