备忘ubuntu上SSH代理/pptp与l2tp VPN的架设
备忘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@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,改成这样:
检查一下 /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文件。
发现了这个 http://err99.in/v.php