作者:上犹日期:
返回目录:设置问题
最近做一个项目需要使用代理,比如A需要发数据给B,原来是直接A发送给B,现在需要经过代理P,变成了A发送给P、P再发送给B,P是透明代理,不做内容的解析。代理的协议包括FTP、TCP、UDP。本文介绍3proxy代理服务器的配置以及JAVA代理的设置。
代理服务器使用3proxy
配置文件3proxy.cfg的配置如下:
#!/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/3proxy.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(Proxy.Type.SOCKS, addr);
client.setProxy(proxy);
client.connect(ip, port);
TCP:
Socket s =new Socket(new Proxy(Proxy.Type.SOCKS, 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转发,故在3proxy.cfg中配置端口和目标IP和端口的映射即可。
如本文对您有帮助,请关注【自学堂】头条号吧!