对于想要在外部访问内部的网络,除了在防火墙上开启相应服务器所对应的端口,最好的方法应该是建立VPN-Server,使得用户可以在外网任何一台计算机上拨入到内网中进行操作,而且VPN可以记录详细的日志,出现问题也便于追查相应的责任人。
我们知道,VPN有很多种,比如Windows Server系列自己就带了VPN服务器,安装配置都非常简单,而今天我要在日志中介绍部署的,是Linux下的VPN-Server,基于PPTP协议。Ubuntu系统是基于Debian构造的一版发行版,交流社区非常活跃,而且因为基于Debian,他自己带的包管理器能很好的处理依赖关系,方便我们安装软件。
其实在Ubuntu下安装VPN-Server是非常非常Easy的,一句话就能搞定:
[codesyntax lang=”bash”]
sudo apt-get install pptpd
[/codesyntax]
嘿嘿 这样就搞定了,接下来的是一些配置,我们需要改三个文件,分别为:
/etc/pptpd.conf
/etc/ppp/pptpd-options
/etc/ppp/chap-secrets
首先我们使用vi命令对第一个文件进行修改,主要是设置本地ip与拨入用户的ip地址
[codesyntax lang=”bash”]
sudo vi /etc/pptpd.conf
[/codesyntax]
如图,localip是linux主机的ip地址,remoteip是地址池,也就是远程拨进来的计算机所分配到的ip地址。
之后我们要修改/etc/ppp/pptpd-options,主要是增加dns配置的说明。
如图,我们增加了两行(ms-dns开头)
最后,我们修改/etc/ppp/chap-secrets,主要是对用户进行配置。
按照,用户名(tab)主机名(tab)密码(tab)分配到的ip地址 这样的格式来填写,其中主机名可以用“*”代替,如果不强制指定该用户分配到哪一个ip地址,可以将最后一项也改为“*”
最后,我们重启pptpd服务,执行
[codesyntax lang=”bash”]
sudo /etc/init.d/pptpd restart
[/codesyntax]
稍等片刻,嘿嘿,从远程建立一个VPN连接,试试看吧。
PS:
如果发现这样无法访问外网了,可以开启ipv4 forward。修改/etc/sysctl.conf,去掉“net.ipv4.ip_forward=1”前的注释号,之后“sudo sysctl -p”应用配置,Ok Enjoy it!
写的很详细,谢谢楼主分享,学习了。
新建VPN连接的时候,服务器IP填哪个?
租的Linode的主机
@Arthur: 填你的主机的IP地址呀。一般是你做域名的时候做A记录的那个。
谢谢楼主分享
用以上方法成功建立了VPN连接,但是为什么不可以访问任何网站了? 请指教
您怕是没有设置转发,系统默认所有的流量都走VPN通道去了目标主机
@Kaisir: 要设置iptables的吧~
@jimohou 修改/etc/sysctl.conf,去掉“net.ipv4.ip_forward=1”前的注释号,之后“sudo sysctl -p”应用配置
这样设置能否从本地局域网外链接vpn服务器啊? 比如我在家里搭建了个vpn 想从办公室链接? 是不是还需要修改remoteip?
谢谢
还有不知道为什么虽然我安装了pptp和pptpd, /etc/下没有ppp文件夹。
@ohmy: 不知道需不需要在路由上port forward。