LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 791|回复: 9

请问实现这种应用最合适的技术是什么?

[复制链接]
发表于 2006-5-22 22:38:04 | 显示全部楼层 |阅读模式
我在公网上有一台固定地址的Debian(机器A),单网卡,家里是ADSL,用Debian(机器B)做NAT跟防火墙,双网卡,现在要让我的内网其他机器能够使用A的线路资源(访问国外速度快),请问最稳定安全的实现手段是哪种?
我考虑了以下几种,但是都觉得有问题:
1、IPSec+iproute2
   - 由于是2.6内核(netkey),没有办法直接操纵隧道路由(没有ipsec0虚设备)
2、IPSec/L2TPD+iproute
   - 公网的机器单网卡要绑定多地址(实现subnet<->SGW),但是也遇到上面同样的问题
2、PPTP+iproute2
   - PPTP不支持标准的加密协议,不想使用MPPE,而且想来想去也会碰到路由问题,即新的pppx设备建立在ADSL的ppp0之上,如何在路由上指定到达某些地址绕过电信的路由直接使用A
3、Zebra
   - 感觉跟这个应用无关,不需要BGP/OSPF
4、广域网代理
   - 没接触过,不知道安全否,另外,我不喜欢代理这种方式
这几天脑子越想越糊涂,感觉犯了严重的方向性错误,请有经验的朋友指点迷津。
发表于 2006-5-22 23:11:28 | 显示全部楼层
首先声明,我说的方法我没有亲自试过。
只需两步:
1、 A、B使用openvpn连接,并把内网通信路由到机器A,A、B机配置好路由;
2、 A机器对来自内网地址出口通信做nat。
回复 支持 反对

使用道具 举报

发表于 2006-5-22 23:32:16 | 显示全部楼层
何必舍近求远自寻烦恼呢,A作代理吧。
回复 支持 反对

使用道具 举报

发表于 2006-5-23 00:24:45 | 显示全部楼层
ab间用squid做普通代理,用vpn座加密代理,那几种方案的选择便成了vpn软件的选择,配置。
回复 支持 反对

使用道具 举报

发表于 2006-5-23 08:51:28 | 显示全部楼层
个人观点:

用openvpn在A上监听

从B上通过客户端与A连接
接口:tun0

在A上做NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

在B上添加路由,主要是访问外国网站的路由(如果你有IP)
ip route add ip1 via gw dev tun0  #其中gw是tun0的对端地址
.....

在B上做NAT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
这样内网用户通过tun0访问外国网站的时候将会使用tun0获取的IP
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 09:12:03 | 显示全部楼层
SpringWind426:
A是Debian,2.6内核,OpenVPN起来以后没有隧道设备(tun0/ipsec0),没办法添加路由。
回复 支持 反对

使用道具 举报

发表于 2006-5-23 10:53:51 | 显示全部楼层
我用的就是debian做的VPN服务器

我是直接通过aptitude安装的openvpn

需要进行一些设置的,你可以参考openvpn网站上的说明做。

系统需要tun支持,不过正常情况下,内核是支持tun的
如果不能自动加载tun模块,可以手动加载 modprobe tun
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 11:01:32 | 显示全部楼层
aleng:
谢谢,用了你的思路,测试成功,并且感觉比较安全,只有通过IPSec隧道的用户才能访问代理出国。
具体做法是这样:
IPSec:  A <==> B <---> Subnet(172.18.30.0/24)
Squid: 只响应来自内网172.18.30.0/24的代理请求
用户数上涨可以考虑B类地址。
A的iptables允许AH/ESP/UDP500,允许来自172.18.30.0/24的TCP Port 3128连接请求,拒绝所有其他的TCP Port 3128连接请求,当然还有SSH,好了,我的机器就开了这点东西。

比较惭愧的是我一直不明白为什么我在iptables的INPUT链上最后添加一条:
iptables -A INPUT -i eth0 -j DROP
以后隧道内的包只能到达A不能返回B了,也不能返回隧道内网。一直完整的时间研究iptables,现在开始补课了。
:-<
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-23 11:46:23 | 显示全部楼层
springwind426:
谢谢你的方案,我觉得OpenVPN客户端设置比较麻烦,还必须安装客户端的软件,所以采用Open/SWAN,客户那边使用标准的IPSec路由器或者在NAT后面使用WinXP的VPN连接设置就可以了,客户容易接受。
我现在的问题是实现的应用仅限于WEB相关的访问。如果从路由下手,可能要给Open/SWAN打KLIPS的补丁支持ipsec0虚拟设备,然后才能设置路由。
不过我还是想试试OpenVPN方案能否实现,如果可以,应该是最好的方案,跟应用无关,但是需要评估一下部署的难度。
做实验去了先。
回复 支持 反对

使用道具 举报

发表于 2006-5-23 12:49:50 | 显示全部楼层
openvpn可以,我就用他连公司
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表