java - 如何将小代理配置为透明代理

标签 java netty little-proxy

我有 2 个网卡。第一个是地址为192.168.5.3的网卡,第二个是地址为10.1.1.252的网卡。 如何配置使用proxy作为透明代理, 这意味着客户端只需更改 192.168.5.3 的网关即可通过代理,而无需修改浏览器的代理选项。 我使用以下代码来执行此操作:

final ChainedProxyAdapter adapter = new ChainedProxyAdapter() {
    @Override
    public InetSocketAddress getChainedProxyAddress() {
        return new InetSocketAddress("10.1.1.252", 8003);
    }
};
ChainedProxyManager manager = new ChainedProxyManager() {
    @Override
    public void lookupChainedProxies(HttpRequest httpRequest, Queue<ChainedProxy> chainedProxies) {
        chainedProxies.add(adapter);
    }
};
HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
    .withAddress(new InetSocketAddress("192.168.5.3", 8002))
    ..withChainProxyManager(manager)
    .start();

(端口 8003 将用于访问互联网。) 在 iptables 中,我添加了一些规则,如下所示:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 8002
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 443 -j REDIRECT --to-port 8002

(eth2的地址是192.168.5.3) 但是,当我将客户端设置为使用网关 192.168.5.3192.168.5.3 dns 时,我总是收到 400 Bad request to URI :/for http url 和 connect not secure for https url。请让我知道解决方案。谢谢。

原因:当proxy从客户端读取请求时,它获取第一行,当使用proxy作为透明时,它收到诸如GET/HTTP/1.1之类的请求,不包含Host,因此返回错误的请求。对于https请求,代理无法解析,尝试解析,浏览器抛出ssl_error_rx_record_too_long消息。 小代理不支持透明模式,小代理中的透明在通过代理连接时被理解为隐藏的计算机信息。

最佳答案

您可以尝试以下操作:

HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
   .withAddress(new InetSocketAddress("192.168.5.3", 8002))
   .withChainProxyManager(manager)
   .withTransparent(true) /* see here */

来自文档:

Specify whether or not to run this proxy as a transparent proxy.

Default = false

关于java - 如何将小代理配置为透明代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39405861/

相关文章:

java - 2D 碰撞位图问题

java - 如何在 netty 中打开纯文本日志记录?

tcp - 什么是 Netty Channel 状态转换?

java - LittleProxy 同时处理 HTTP 和 HTTPS

java - Proguard keepclasseswithmembers : members isnt kept?

java - 转换 Java 8 流中的代码

java - 在 netty 代理中添加 gzip deflate 的 channel 处理程序

java - 在java中构建后无法读取文件

java - 关闭 Netty 服务器本身