最近做项目要用代理。例如,A需要将数据发送给B,原来直接A发送给B,现在通过代理P成为A,成为P,成为P,成为B,P作为透明代理,不进行内容分析。

代理的协议包括FTP、TCP、UDP。本文介绍3proxy代理服务器的配置以及JAVA代理的设置。


代理服务器使用3proxy

配置文件3的配置如下:

#!/usr/local/bin/3proxy
#域名解析服务器和缓存
nserver 8.8.8.8
nserver 4.4.4.4
nscache 65536
#超时设置
timeouts 1 5 30 60 180 1800 15 60
#日志设置
log "/root/log; D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 3
#IP设置,注意,此处外部IP使用0.0.0.0,不能直接使用机器的外网IP
external 0.0.0.0
internal 192.168.168.14
#SOCKS代理,ip验证,允许所有的链接
auth iponly
flush
allow * * * * CONNECT
maxconn 65535
socks -p9000
#UDP转发
auth none
udppm -s 9001 222.189.192.118 9999
udppm -s 9002 222.189.192.139 9999


JAVA代理的设置

Apache Ftp client:

FTPClient client = new FTPClient();
client.setDefaultTimeout(30 * 1000);
client.setDataTimeout(180 * 1000);
client.setConnectTimeout(10 * 1000);
SocketAddress addr = new InetSocketAddress(proxyIp, proxyPort);
Proxy proxy = new Proxy, addr);
client.setProxy(proxy);
client.connect(ip, port);

TCP:

Socket s =new Socket(new Proxy, new InetSocketAddress(proxyIp, proxyPort)));
SocketAddress addr = new InetSocketAddress(ip, port);
s.setSoLinger(true, 0);
s.setKeepAlive(true);
s.setTcpNoDelay(true);
s.setSoTimeout(3000);
s.connect(addr, 10000);

UDP:

本人目前还没找到JAVA UDP设置代理的方式,故采用UDP端口转发的方式,刚好3proxy也支持UDP转发,故在3中配置端口和目标IP和端口的映射即可。

如本文对您有帮助,请关注【自学堂】头条号吧!

相关推荐