Ubuntu Linux下OPENVPN和SS5的配置使用--使用SS5(SOCKS5)共享VPN连接
[| 2010/04/15 17:13]
Linux下的OPENVPN客户端并不支持服务器push过来的dns地址(我是使用Ubuntu下/etc/init.d/openvpn start来启动vpn客户端的),所以假如使用vpn上国外某些网站的话,会由于国内的dns污染而无法连接。这不是vpn的问题,是由于dns解析出来的结果压根就是错的。
解决办法:root权限修改/etc/resolv.conf。修改为国外的dns服务器,这里可以使用Google的:8.8.8.8服务器,简单好记。正在研究通过修改/etc/init.d/openvpn脚本来自动实现修改dns的方法。
现在,SS5仍不能把这个vpn连接共享出去,因为路由表的问题。vpn连接建立后会把所有的流量路由至vpn服务器,比如该机收到1发来的包,他会把应答发送至vpn服务器,让vpn服务器来发送给1,由于1无法和vpn服务器通信(比如教育网机器和国外vpn),导致1无法收到代理服务器的应答,共享失败。所以要在路由表中添加一条规则,让发往1的数据包直接发往网关而不经vpn。
注:上面说的共享失败的原因我现在还不确定到底是何种原因,可能性如下:1,就是文中说的,主机1和vpn服务器无法通信。2,主机1中本来是和代理服务器通信的,突然收到vpn服务器发来的一堆包,会认为是垃圾,丢弃导致通信失败。
如大家有对其中原理了解的欢迎指教。不过即使这种方式能通信,也由于应答发往vpn再从vpn发回来而导致带宽浪费和延迟加大。
最后,还需要在iptables里开放相应端口。iptables我最近一直在研究,让人蛋疼的是居然没有一个命令可以显示出所有的规则。-L也只是显示一部分。所以有时候开端口不用在iptables里加规则(默认开放),有的时候就必须加了。为保万一,还是加上的好。
解决办法:root权限修改/etc/resolv.conf。修改为国外的dns服务器,这里可以使用Google的:8.8.8.8服务器,简单好记。正在研究通过修改/etc/init.d/openvpn脚本来自动实现修改dns的方法。
现在,SS5仍不能把这个vpn连接共享出去,因为路由表的问题。vpn连接建立后会把所有的流量路由至vpn服务器,比如该机收到1发来的包,他会把应答发送至vpn服务器,让vpn服务器来发送给1,由于1无法和vpn服务器通信(比如教育网机器和国外vpn),导致1无法收到代理服务器的应答,共享失败。所以要在路由表中添加一条规则,让发往1的数据包直接发往网关而不经vpn。
注:上面说的共享失败的原因我现在还不确定到底是何种原因,可能性如下:1,就是文中说的,主机1和vpn服务器无法通信。2,主机1中本来是和代理服务器通信的,突然收到vpn服务器发来的一堆包,会认为是垃圾,丢弃导致通信失败。
如大家有对其中原理了解的欢迎指教。不过即使这种方式能通信,也由于应答发往vpn再从vpn发回来而导致带宽浪费和延迟加大。
最后,还需要在iptables里开放相应端口。iptables我最近一直在研究,让人蛋疼的是居然没有一个命令可以显示出所有的规则。-L也只是显示一部分。所以有时候开端口不用在iptables里加规则(默认开放),有的时候就必须加了。为保万一,还是加上的好。