Preserve dnat mapping when used with localnet.
This allows using proxychains as a means of just changing the destination IP and port of network traffic similar to iptables DNAT without the need for root permissions. Example usage: localnet 127.0.0.0/8 dnat 1.1.1.1:1234 127.0.0.1:8123 This will redirect traffic to 1.1.1.1 on port 1234 to 127.0.0.1:8123.pull/476/head
parent
060801d8c8
commit
3ab15aa05c
|
@ -743,6 +743,10 @@ HOOKFUNC(int, connect, int sock, const struct sockaddr *addr, unsigned int len)
|
||||||
if((p_addr_in->s_addr ^ localnet_addr[i].in_addr.s_addr) & localnet_addr[i].in_mask.s_addr)
|
if((p_addr_in->s_addr ^ localnet_addr[i].in_addr.s_addr) & localnet_addr[i].in_mask.s_addr)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!v6 && dnat) {
|
||||||
|
memcpy(&((struct sockaddr_in *) addr)->sin_addr, p_addr_in, sizeof(*p_addr_in));
|
||||||
|
((struct sockaddr_in *) addr)->sin_port = htons(port);
|
||||||
|
}
|
||||||
PDEBUG("accessing localnet using true_connect\n");
|
PDEBUG("accessing localnet using true_connect\n");
|
||||||
return true_connect(sock, addr, len);
|
return true_connect(sock, addr, len);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue