用ssh跑pppd (最简单的linux vpn )
用ssh跑pppd (最简单的linux vpn )
发布时间:2016-12-26 来源:查字典编辑
摘要:用ssh跑pppd(最简单的linuxvpn)sbaa2003.1.10我为了通过封了udp包的防火墙上qq试了很多办法用snake的soc...

用ssh跑pppd (最简单的linux vpn )

sbaa 2003.1.10

我为了通过封了udp包的防火墙上qq

试了很多办法

用snake的socks5代理不错,可以必须外网机器是 windows

而linux下,stunnel 只是转发tcp不支持qq 的 udp

于是我想到了vpn pptpd是个很不错的,支持windows的vpn客户端

可惜要防火墙开ip转发,也不满足我的要求,

今天看到一个ssh-ppp脚本,再看了一些文章,原来竟然这么简单!!

只要你有两台linux 外网上有sshd服务,你就可以透过防火墙

建立vpn !

我家拨号的机器adsl 是动态域名 sbaa.3322.org

我公司一台linux 内网的(10.9.0.16) 通过公司的网关nat 可以访问到 sbaa.3322.org的22(ssh)

两台机器上都有pppd 条件就ok!

开始:

在家里机器上

useradd vpn

ssh-keygen

Enter file in which to save the key (/root/.ssh/identity): vpnkey

现在有了vpnkey 和vpnkey.pub

配置 sshd /etc/ssh/sshd_config

打开 RSAAuthentication yes

cp vpnkey.pub /home/vpn/.ssh/authorized_keys

把下面内容加到/etc/sudoers

Cmnd_Alias VPN=/usr/sbin/pppd

vpn ALL=NOPASSWD: VPN

本机测试一下

sudo /usr/sbin/pppd noauth

~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V鴠'}"}(}"~}#?}!}!} }4}"}&} } } } }%}&V?

就ok

好了

到公司机器上,把刚才的vpnkey ftp 过来

测一下

看到提示符登录成功一切就ok了

ssh -l vpn -i ./vpnkey -1 -P sbaa.3322.org

Linux 2.2.14.

cool:~$ exit

logout

Connection to sbaa.3322.org closed.

建立以下脚本

vpnstart

#!/bin/sh

# VPN PPP-SSH script

# History

# 16 May 2002 j.n.pritchard@brad.ac.uk

# *******************************************

# You will need to edit in these varibles

# Server Hostname

SERVER_HOSTNAME=sbaa.3322.org

# Username on the server for VPN

SERVER_USERNAME=vpn

# SSH Private Key Location

PRIVATE_KEY_FILE=/home/bin_shi/vpnkey

# *******************************************

# You do NOT need to edit below this line unless you use the subnet 192.168.250

# VPN Network subnet (change to a different subnet if this one is in use)

VPN_SUBNET=192.168.6

# Server ppp address

SERVER_IFIPADDR=$VPN_SUBNET.1

# Client ppp address

CLIENT_IFIPADDR=$VPN_SUBNET.2

# Extra SSH Options

LOCAL_SSH_OPTS="-P -1 -i $PRIVATE_KEY_FILE"

# Path environment

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11/bin

# Command Alias'

PPPD=/usr/sbin/pppd

SSH=/usr/local/bin/ssh

if ! test -f $PPPD ; then echo "can't find $PPPD"; exit 3; fi

if ! test -f $SSH; then echo "can't find $SSH" ; exit 4; fi

case "$1" in

start)

 # echo Starting VPN Connection

 $ updetach noauth passive pty "$ $ $ -l$ -o Batchmode=yes sudo $ nodetach notty noauth" ipparam vpn $:$

 # echo "connected."

 ;;

stop)

 # echo -n "Stopping vpn to $SERVER_HOSTNAME: "

 PID=`ps ax | grep "$ $ $ -l$ -o" | grep -v ' passive ' | grep -v 'grep ' | awk '{print $1}'`

 if [ "$" != "" ]; then

 kill $PID

 echo "disconnected."

 else

 echo "Failed to find PID for the connection"

 fi

 ;;

config)

 echo "SERVER_HOSTNAME=$SERVER_HOSTNAME"

 echo "SERVER_USERNAME=$SERVER_USERNAME"

 echo "SERVER_IFIPADDR=$SERVER_IFIPADDR"

 echo "CLIENT_IFIPADDR=$CLIENT_IFIPADDR"

*)

 echo "Usage: vpn "

 exit 1

 ;;

esac

exit 0

有些配置你可以自己改改

然后./vpnstart start

呵呵

ifconfig -a 看到 192.168.6.2了吗

ping 192.168.6.1 就是我的 sbaa.3322.org了

不错

在sbaa.3322.org上加

route add -net 10.9.0.0 netmask 255.255.248.0 gw 192.168.6.2

然后到我公司的windows机器上加

route add 192.168.6.1 mask 255.255.255.255 10.9.0.16

ping 192.168.6.1 哦卡 通的

然后qq上我的sbaa.3322.org 的socks5代理

呵呵upd包在ssh的链路里被加密封装了

防火墙被穿过了。

这个办法真好!可惜不是我自己发现的,我也是看到网上有ssh-ppp脚本

再研究了一下

呵呵!

linux上的vpn居然这么简单 !

大家有什么高见,还希望多多交流!

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新unix linux学习
热门unix linux学习
操作系统子分类