我有2张网卡。第一个是地址为10.1.1.252
的网卡,第二个是地址为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();
的网关即可通过代理,而无需修改浏览器的代理选项。
我使用以下代码执行此操作:
iptables
(端口8003将访问互联网。)
在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
我添加了一些规则如下:
192.168.5.3
(eth2的地址为192.168.5.3
)
但是当我将客户端设置为使用网关192.168.5.3
和GET / HTTP/1.1
dns时,我总是得到400 Bad请求到URI:/对于http url并且连接不安全用于https url。请让我知道解决方案。感谢。
原因:当代理从客户端读取请求时,它获取第一行,并且当使用代理作为透明时,它收到诸如ssl_error_rx_record_too_long
之类的请求不包含主机,因此它返回错误请求。使用https请求,代理无法解析,尝试解析,浏览器抛出val myMap = Map("one" ->1, "two" -> 2)
消息。
小代理不支持透明模式,小代理中的透明在通过代理连接时被理解为隐藏的计算机信息。
答案 0 :(得分:0)
您可以尝试以下操作:
{{1}}
来自文档:
指定是否将此代理作为透明代理运行。
默认= false