我已经有一个可以处理多个HTTP请求的工作HTTP代理服务器.现在我的问题是如何处理https请求?
这是我正在使用的简化代码:
class Daemon
{
public static void main(String[] args)
{
ServerSocket cDaemonSocket = new ServerSocket(3128);
while(true)
{
try
{
Socket ClientSocket = cDaemonSocket.accept();
(new ClientHandler(ClientSocket )).start();
}catch(Exception e) { }
}
}
}
Run Code Online (Sandbox Code Playgroud)
和ClientHandler
class ClientHandler extends Thread
{
private Socket socket = null;
private Socket remoteSocket = null;
private HTTPReqHeader request = null;
ClientHandler(Socket socket)
{
this.socket = socket;
request = new HTTPReqHeader();
request.parse(socket); // I read and parse the HTTP request here
}
public void run()
{ …Run Code Online (Sandbox Code Playgroud) 我很困惑为什么我的IPTable无法在路由器中工作。我想做的是将来自目的IP的所有数据包重定向到端口80和443到192.168.1.110:3128。但是,当我尝试这样做:
iptables -t nat -A PREROUTING -s 192.168.1.5 -p tcp --dport 80:443 -j DNAT --to-destination 192.168.1.110:3128
Run Code Online (Sandbox Code Playgroud)
不起作用。但是,当我添加它时,
iptables -t nat -A POSTROUTING-j MASQUARADE
Run Code Online (Sandbox Code Playgroud)
有用。但假装的问题是我没有得到真正的IP,而是路由器的IP。我需要获取源IP,以便我的代理服务器可以记录连接到它的所有IP。有人可以告诉我如何在不使POSTROUTING跳至Masquarade的情况下使其工作吗?