备忘ubuntu上SSH代理/pptp与l2tp VPN的架设

2010年10月13日 | 分类: 翻墙相关 | 标签: , , , ,

备忘ubuntu上SSH代理的架设

以下我在ubuntu下完全没有问题,记录如下:(其实也是转的别人的)

==========

为了满足“翻Wall”的需要,在国外的 Linux主机上或 VPS 上建个可 ssh登录的用户,使用 ssh 的 Tunnel 来作代理是十分常见的方法。
但是主人往往又想最小化用户权限,以避免对系统造成影响。最简单的办法就是,禁止用户登录。
其实 ssh 可以连接到 sshd 但是不执行远程命令(默认是启动用户设定的 shell ),使用 -N 参数即可。
在服务器上建一个 username :
$ useradd -s /bin/false username
将用户的 shell 设置成 /bin/false。这样用户就无法与系统进行交互。设置密码:
$ passwd username
补充一下:对已有帐号禁止其shell交互使用:
$ usermod -s /bin/false username
小技巧:
也可以使用 /usr/bin/passwd 作为用户的 shell ,这样用户就可以通过登录而来自主修改密码。需要注意的是,需要将 /usr/bin/passwd 这一行写进 /etc/shells 文件。
sshd 认证通后之后,会检查设定的 shell 是否登记在 /etc/shells 文件中,若已经登记,则 fork自己,然后 fork 出来的子进程再 exec 设定的 shell 。而 ssh 的 -N 参数,则是告诉 sshd 不需要执行 shell。
建立Tunnel:
$ ssh -D 1080 -qfnN sshgo@33.33.33.33
输入密码即可使用(也可以用key认证)。
Windows的话,可以使用 plink.exe 或者 MyEnTunnel(MyEnTunnel 本质上也是使用 plink.exe 来建立Tunnel)。
此时账号 username 可以通过 sshd 的认证使用 TcpForwarding ,但是不能运行 shell,不能与系统交互。刚好可以用来为朋友提供国外的代理翻Wall。
参数详解:
-D 1080 建立动态Tunnel,监听在本地1080端口。
-q 安静模式。
-f ssh在后台运行,即认证之后,ssh退居后台。
-n 将 stdio 重定向到 /dev/null,与-f配合使用。
-N 不运行远程程序。即通知 sshd 不运行设定的 shell。

为了满足“翻Wall”的需要,在国外的 Linux主机上或 VPS 上建个可 ssh登录的用户,使用 ssh 的 Tunnel 来作代理是十分常见的方法。
但是主人往往又想最小化用户权限,以避免对系统造成影响。最简单的办法就是,禁止用户登录。
其实 ssh 可以连接到 sshd 但是不执行远程命令(默认是启动用户设定的 shell ),使用 -N 参数即可。
在服务器上建一个 username :
$ useradd -s /bin/false username将用户的 shell 设置成 /bin/false。这样用户就无法与系统进行交互。设置密码:
$ passwd username补充一下:对已有帐号禁止其shell交互使用:
$ usermod -s /bin/false username小技巧:
也可以使用 /usr/bin/passwd 作为用户的 shell ,这样用户就可以通过登录而来自主修改密码。需要注意的是,需要将 /usr/bin/passwd 这一行写进 /etc/shells 文件。
sshd 认证通后之后,会检查设定的 shell 是否登记在 /etc/shells 文件中,若已经登记,则 fork自己,然后 fork 出来的子进程再 exec 设定的 shell 。而 ssh 的 -N 参数,则是告诉 sshd 不需要执行 shell。
建立Tunnel:
$ ssh -D 1080 -qfnN sshgo@96.44.169.244输入密码即可使用(也可以用key认证)。
Windows的话,可以使用 plink.exe 或者 MyEnTunnel(MyEnTunnel 本质上也是使用 plink.exe 来建立Tunnel)。
此时账号 username 可以通过 sshd 的认证使用 TcpForwarding ,但是不能运行 shell,不能与系统交互。刚好可以用来为朋友提供国外的代理翻Wall。
参数详解:-D 1080 建立动态Tunnel,监听在本地1080端口。-q 安静模式。-f ssh在后台运行,即认证之后,ssh退居后台。-n 将 stdio 重定向到 /dev/null,与-f配合使用。-N 不运行远程程序。即通知 sshd 不运行设定的 shell。

为了满足“翻Wall”的需要,在国外的 Linux主机上或 VPS 上建个可 ssh登录的用户,使用 ssh 的 Tunnel 来作代理是十分常见的方法。但是主人往往又想最小化用户权限,以避免对系统造成影响。最简单的办法就是,禁止用户登录。其实 ssh 可以连接到 sshd 但是不执行远程命令(默认是启动用户设定的 shell ),使用 -N 参数即可。在服务器上建一个 username :$ useradd -s /bin/false username将用户的 shell 设置成 /bin/false。这样用户就无法与系统进行交互。设置密码:$ passwd username补充一下:对已有帐号禁止其shell交互使用:$ usermod -s /bin/false username小技巧:也可以使用 /usr/bin/passwd 作为用户的 shell ,这样用户就可以通过登录而来自主修改密码。需要注意的是,需要将 /usr/bin/passwd 这一行写进 /etc/shells 文件。sshd 认证通后之后,会检查设定的 shell 是否登记在 /etc/shells 文件中,若已经登记,则 fork自己,然后 fork 出来的子进程再 exec 设定的 shell 。而 ssh 的 -N 参数,则是告诉 sshd 不需要执行 shell。建立Tunnel:$ ssh -D 1080 -qfnN sshgo@33.33.33.33输入密码即可使用(也可以用key认证)。Windows的话,可以使用 plink.exe 或者 MyEnTunnel(MyEnTunnel 本质上也是使用 plink.exe 来建立Tunnel)。此时账号 username 可以通过 sshd 的认证使用 TcpForwarding ,但是不能运行 shell,不能与系统交互。刚好可以用来为朋友提供国外的代理翻Wall。参数详解:-D 1080 建立动态Tunnel,监听在本地1080端口。-q 安静模式。-f ssh在后台运行,即认证之后,ssh退居后台。-n 将 stdio 重定向到 /dev/null,与-f配合使用。-N 不运行远程程序。即通知 sshd 不运行设定的 shell。

备忘ubuntu下pptp与l2tp的搭建方法

近来搞了VPS,当然得建立VPN了,pptp与l2tp都建立好了。方法嘛都是参照网上可以搜索到的。在这里备忘一下,哪天重装系统可以马上搭建好。我对ubuntu也只是使用者水平,具体原理及很底层的东西,我不太了解。只是按网上的教程做,加上一些自己的看法

以下是两个我参考的网址:

PPTP主要参考:虽然这是说的centOS上面的,但ubuntu上同样配置,只是装软件方法不同。但我没有参考这上面的l2tp.

http://suo防防防防luo.org/2010/04/4/

注意,上面这个 网站,因为传授很多【番蔷】      所以被封了,而且封的非常厉害,IP,域名,域名关键字,全封,可以说是封的最厉害的。中间四个防字去掉后翻出去可见。

l2tp部分主要参考:

http://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html

可以说完全照做的。只是在iptables的规则部分,有所小变动。

首先是PPTP。

需要安装三个软件:pptpd本身 、ppp服务(用来用户拨号验证)、iptables(强大的路由控制软件),由于ubuntu本身的强大,直接用命令装这三个软件,一切的东西都会自动搞定。

sudo apt-get install pptpd ppp iptables

装完后这三个都是服务。接下来就是配置:

我是用的vim来修改配置文件的,这东西确实还行。

@@@@@@@@@@@配置文件/etc/pptpd.conf@@@@@@@@@@@@

//这个文件要修改的,主要是

ms-dns 8.8.8.8            //将这两行的#号去掉,

ms-dns 8.8.4.4            //而且换成google的DNS服务器,这样可以防DNS污染。

最终的配置文件像这样:(不一定完全是这样):

@@@@@@@@@@@@@@@

name pptpd
  refuse-pap
  refuse-chap
  refuse-mschap
  require-mschap-v2
  require-mppe-128
  proxyarp
  lock
  nobsdcomp
  novj
  novjccomp
  nologfd
  ms-dns 8.8.8.8
  ms-dns 8.8.4.4

@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@@配置文件/etc/pptpd.conf@@@@@@@@@@

这个文件,配置pptp用户拨号成功后的Ip地址。配置好后的如下

@@@@@@@@@@@@@@@@@@@@@@@

option /etc/ppp/options.pptpd

#logwtmp     //这一行,我看的pptp教程中要打开,而我看的l2tp的教程要关掉,我现在是关掉的,pptp与l2tp都正常

localip 192.168.100.1    //pptp服务器地址

remoteip 192.168.100.2-40   //pptp分配给客户机的IP地址池

@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@配置文件/etc/ppp/chap-secrets@@@@@@@@@

这个文件,是配置ppp拨号用户与密码的。

很简单,一行一个用户。每一行四个参数 :用户名    服务名   密码    可以拨号的IP

比如:

test       pptpd           testgood            *

//上面一行表示一个用户名为test,密码为testgood的用户,可以连接pptpd服务,而且从哪个IP都可以拨号。如果你又建立了l2tp的拨号,那pptpd可以换成*,这样这个用户pptp与l2tp都能够连接。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@@@@@@@@配置文件/etc/sysctl.conf@@@@@@@@@@

net.ipv4.ip_forward = 0

改成

net.ipv4.ip_forward = 1

保存并退出,然后执行sysctl -p这个命令。

这时,PPTP基本上配置好了,输入service pptpd start启动。

接下来就是配置iptable.这东西太强大,加上路由表路由规则我也不是太熟悉,在建立pptp时按教程上的几下就搞完了,但是在l2tp老是搞不定。

配置iptables,首先输入service iptables start启动。

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE

iptables -I FORWARD -p tcp –syn -s 192.168.100.0/24 -j TCPMSS –set-mss 1356

第二条是保证手机能连上。

以上两条,服务器重启后就不生效了,要想办法让它服务器启动时也生效,后面再说。

然后是L2TP的。

安装软件:

sudo aptitude install openswan
用文字编辑器打开 /etc/ipsec.conf,改成这样:
version 2.0
config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=YOUR.SERVER.IP.ADDRESS
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

上面的配置文件,有一个地方要特别重要,就是格式,conn下面的这么多行,都是有缩进的,而且是一定要缩进。YOUR.SERVER.IP.ADDRESS换成服务器IP。

用文字编辑器打开 /etc/ipsec.secrets,改成这样:

YOUR.SERVER.IP.ADDRESS   %any:  PSK "YourSharedSecret"
其中YOUR.SERVER.IP.ADDRESS为服务器IP,YourSharedSecret为共享密钥,你可以修改成任何你喜欢的字符串。

再次修改/epc/sysctl.conf文件,增加以下两行。
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects =  0
加上在设置pptp时的一行,这个配置文件总共三行有效:
net.ipv4.ip_forward = 1
保存并退出,然后执行sysctl -p这个命令。

这时可以用下面这个命令检查是否正确安装好了,要全部OK,最后一项不用关心。

sudo ipsec verify

安装软件:

sudo aptitude install xl2tpd

用文字编辑器打开 /etc/xl2tpd/xl2tpd.conf,改成这样:

[global]
ipsec saref = yes
[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个,文件内容如下:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

然后重启服务

sudo /etc/init.d/xl2tpd restart

然后是建立l2tp的用户,方法与pptp相同,就不说了。

最后是路由表的问题:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE

iptables -I FORWARD -p tcp –syn -s 192.168.100.0/24 -j TCPMSS –set-mss 1356

到此就完了。总共用了四条iptables规则,把它们加入开机运行脚本:

因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在 /etc/rc.local 文件中加入这四条规则。

经过我重启服务器,发现pptp可以连接,但是l2tp不能连接,可能是因为ipsec与xl2tpd没有随系统启动。所以把这两人服务的启动命令也加入/etc/re.local文件。

来源:神医的 原文:备忘ubuntu上SSH代理的架设备忘ubuntu下pptp与l2tp的搭建方法

  1. 匿名
    2010年10月13日11:56

    发现了这个 http://err99.in/v.php