PDA

查看完整版本 : LINUX下用SSH+PPPD实现企业间VPN


Tony
2003-10-22, 07:29 PM
这是我参考网上N多文章,综合实验,成功后的方法,无需下载其它软件,无需打补丁和重编译内核,用PPPD OVER SSH实现的企业间VPN。

一、环境
本地(Local):Redhat Advananced Server, IP:192.168.0.1, 域名:local.3322.org
远地(Remote): Redhat 8.0, IP:192.168.1.1, 域名:remote.3322.org

二、步骤
两端操作都用root用户
1、Remote端 建用户:adduser vpnuser
2、Local端 生成KEY:ssh-keygen -t das
在.ssh目录下生成两个文件:id_dsa id_dsa.pub
3、Local端 把id_dsa.pub考到Remote端:scp .ssh/id_dsa.pub remote.3322.org:/tmp
4、Remote端: cat /tmp/id_dsa.pub >> ~vpnuser/.ssh/authorized_keys
5、Remote端 再把权限赋给vpnuser:
chown -R vpnuser:vpnuser ~vpnuser/.ssh
chmod 711 ~vpnuser/.ssh
chmod 644 ~vpnuser/.ssh/authorized_keys
6、测试:在Local端,
ssh -l vpnuser remote.3322.org
应该不用输密码就能连接,否则,重新查查看啦。
7、Remote端 给vpnuser运行pppd和route的权限,修改文件:/etc/sudoer
加两行:
Cmnd_Alias VPN=/usr/sbin/pppd,/sbin/route
vpnuser ALL=(ALL) NOPASSWD: VPN

8、Local端 最重要的一步了---连!

pppd connect-delay 5000 pty "ssh -t -l vpnuser remote.3322.org sudo
/usr/sbin/pppd noauth ipcp-accept-remote ipcp-accept-local" 192.168.0.2:192.168.1.2 noauth local

ipcp-accept-local ipcp-accept-remote

注意:这里假设本地和远地192.168.0.2和192.168.1.2都是没被使用的
用ifconfig看看,如果多了个ppp设备,就算连接成功了。
一般要试几次才成功。

9、建立路由
Local端:route add -net 192.168.1.0/24 gw 192.168.1.2
Remote端:route add -net 192.168.0.0/24 gw 192.168.0.2
(或者在Local端:ssh -t -o 'Batchmode yes' -l vpnuser remote.3322.org sudo /sbin/route add -net 192.168.0.0/24 gw 192.168.0.2)
这样,两端的局域网就算连在地起了,局域网内任找台能上网的电脑,ping一下对方的IP看看,没问题!

10、断开连接:ps找进程,kill它。

三、把连接过程写个script吧,我不会