Linux服务器集群VPN代理配置

因为之前本科参与开发的一个互联网新闻采集系统需要爬取几个国外的新闻站点,通过FQ才能访问,而我们的服务器是阿里云服务器,没有操作界面,而且抽取任务是定时执行,必须要实现程序控制VPN的连接与断开。所以就学习如何在linux上利用命令行和脚本操作建立VPN连接,单纯探索的过程没少走弯路,所以把经验分享出来供大家学习。

一、L2TP简介

LinuxFQ一般利用L2TP协议进行VPN的连接操作,建立连接需要拥有L2TP的服务器IP,用户名,密码和共享秘钥,这是合作方清华大学提供的代理信息(为了保密,密码什么的做了隐藏)

IP:xxx.xxx.xxx.xxx

Type:L2TP

用户名 linode

密码 sharedPasswd

共享密钥 sharedKey

我搭建的时候参考的这个链接:https://www.elastichosts.com/blog/linux-l2tpipsec-vpn-client/

想了解L2TP的可以参考这个链接:https://baike.so.com/doc/3372814-3550913.html

二、单台linux主机连接vpn配置

1.安装软件

更新linux系统自带的软件资源库

$ sudo apt-get update

安装软件

$ sudo apt-get install openswan xl2tpd

2.修改IPsec配置文件

$ sudo vi /etc/ipsec.conf

在ipsec.conf里添加以下内容:(注意:conn顶格写,authby前面空8格)

conn L2TP-PSK

    authby=secret

    pfs=no

    auto=add

    keyingtries=3

    dpddelay=30

    dpdtimeout=120

    dpdaction=clear

    rekey=yes

    ikelifetime=8h

    keylife=1h

    type=transport

    left=%defaultroute

    leftnexthop=%defaultroute

    leftprotoport=17/1701

    right=xxx.xxx.xxx.xxx  <— ip修改为代理服务器的ip

    rightprotoport=17/1701

实际操作截图:

3.配置用户认证,添加共享密码

$ sudo vi /etc/ipsec.secrets

添加如下内容

0.0.0.0 xxx.xxx.xxx.xxx: "sharedKey"

4.验证配置

$ sudo /etc/init.d/ipsec start  

$ sudo ipsec auto --up L2TP-PSK

如果看到一些输出,代表没有问题

$ sudo /etc/init.d/ipsec stop

5.修改xl2tpd配置文件

$ sudo vi /etc/xl2tpd/xl2tpd.conf 添加如下内容

[lac vpn-connection]

lns =xxx.xxx.xxx.xxx  <— ip修改为代理服务器的ip

refuse chap = yes

refuse pap = yes

require authentication = yes

name = vpn-server

ppp debug = yes

pppoptfile = /etc/ppp/options.l2tpd.client

length bit = yes

实际操作截图

注:文件以;开头的行,是注释该行的意思

6.修改options.l2tpd.client配置文件

$ sudo vi /etc/ppp/options.l2tpd.client

添加如下内容

ipcp-accept-local

ipcp-accept-remote

refuse-eap

require-mschap-v2

noccp

noauth

idle 1800

mtu 1410

mru 1410

defaultroute

usepeerdns

debug

lock

connect-delay 5000

name linode   <— 用户名

password sharedPasswd  <— 密码

实际操作截图:

7.连接到VPN

开启ipsec服务

$ sudo /etc/init.d/ipsec start

开启xl2tpd服务

$ sudo /etc/init.d/xl2tpd start

 

$ sudo ipsec auto --up L2TP-PSK

 

更改xl2tpd文件夹的权限

$ sudo chown -R hadoop:hadoop /var/run/xl2tpd/

建立ppp0点对点链接

$ sudo echo "c vpn-connection" > /var/run/xl2tpd/l2tp-control

可以通过ifconfig命令看到已经建立了ppp0点对点连接

而此前是没有ppp0的点对点连接的,如图所示:

8.设置所有流量走VPN

到这个步骤只是连接上了L2TP服务器,加入了VPN的网络,但是还不能访问国外网站,需要进一步设置流量走VPN

注:下面是设置此项所用到的参数信息

xxx.xxx.xxx.xxx为代理服务器的ip,

114.215.83.247是服务器的外网网关,

114.215.82.131是服务器的外网ip,

eth0为外网的连接名,下面的命令中也用到了这些ip 

 

使用ip route show命令来查看当前上网所使用的网关 注:为了安全起见,进行了隐藏处理,红色部分为网关,蓝色部分为外网IP

继续执行下面的命令:

$ sudo ip route replace xxx.xxx.xxx.xxx via 114.215.83.247 dev eth1 src 114.215.82.131

$ sudo ip route replace default dev ppp0

再使用ip route show 命令看到网关已经改成了vpn服务器的ip,如图:

9.测试vpn的使用是否成功

以facebook和百度为例,进行ping测试

$ ping www.facebook.com 

可以看到可以ping通facebook

$ ping www.baidu.com 注:由于流量走vpn导致国内网站延迟变高

10.断开vpn连接

$ sudo ip route del xxx.xxx.xxx.xxx via 114.215.83.247 dev eth1 src 114.215.82.131

$ sudo ip route del default dev ppp0

$ sudo ip route add default via 114.215.83.247

$ sudo /etc/init.d/xl2tpd stop

$ sudo /etc/init.d/ipsec stop

到此已经关闭了vpn,恢复了正常的上网状态,ping百度测试,如图所示:

三、linux集群统一连接vpn

1.仿照第二步对集群每台机器配置好vpn连接

2.利用脚本控制每台机器的vpn连接(以阿里云2为例)

登录阿里云2

$ ssh hadoop2

$ vi startVpn.sh

在脚本startVpn.sh中添加如下内容,xxx.xxx.xxx.xxx为VPN服务器ip

#! / bin/sh

echo "服务器密码" | sudo -S ip route replace xxx.xxx.xxx.xxx via 121.42.139.247 dev eth1 src 121.42.137.47

sleep 1s

echo "服务器密码" | sudo -S chown -R hadoop:hadoop /var/run/xl2tpd/

echo "c vpn-connection" > /var/run/xl2tpd/l2tp-control

sleep 10s

echo "服务器密码" | sudo -S ip route replace default dev ppp0

:wq!保存退出

注:echo "密码" | sudo –S 命令  这种写法可以使sudo的脚本自动输入密码

$ vi closeVpn.sh

在脚本closeVpn.sh中添加如下内容:

#! / bin/sh

echo "服务器密码" | sudo -S ip route del xxx.xxx.xxx.xxx via 121.42.139.247 dev eth1 src 121.42.137.47

echo "服务器密码" | sudo -S ip route del default dev ppp0

echo "服务器密码" | sudo -S ip route add default via 121.42.139.247

echo "服务器密码" | sudo -S /etc/init.d/xl2tpd restart

:wq!保存退出

对各台机器重复此操作,保证每台机器上都有startVpn.sh和closeVpn.sh脚本

3.在主节点上实现对集群的vpn控制(阿里云1)

$ vi startAllVpn.sh

添加以下内容

#! / bin/sh

sh startVpn.sh

ssh -p 22 [email protected] ‘sh startVpn.sh‘

ssh -p 22 [email protected] ‘sh startVpn.sh‘

ssh -p 22 [email protected] ‘sh startVpn.sh‘

ssh -p 22 [email protected] ‘sh startVpn.sh‘

sleep 7500s

sh closeVpn.sh

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

:wq!保存退出

注:sleep 7500秒后,脚本自动关闭vpn连接,是我们定义的一种安全机制

$ vi closeAllVpn.sh 该脚本会由java程序执行完抽取任务后自动调用关闭vpn

添加以下内容:

#! / bin/sh

sh closeVpn.sh

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

ssh -p 22 [email protected] ‘sh closeVpn.sh‘

:wq!保存退出

4.开启集群vpn连接

$ sh startAllVpn.sh

5.关闭集群vpn连接

$ sh closeAllVpn.sh

时间: 2024-08-04 10:26:20

Linux服务器集群VPN代理配置的相关文章

Linux服务器集群运维经验

公司大概有5000+以上的服务器节点,包括各种应用,我和同事共同维护大约2500+的服务器,主要包括一些视频cdn,直播视频cdn,webcdn和p2p服务器. 以下是自己在运维工作中的一点经验和看法,希望对大家有所帮助 1.       服务器型号的区分,为以后的统一化和标准化作硬件上的准备,很多人忽视这一点,其实如果这一点做得好会使后面的运维工作轻松很多,根据应用我们主要把服务器分为3中,cpu密集型,主要用于大量计算应用,比如p2p;内存密集型,用于cache类应用,比如squid,var

Linux服务器集群系统(一)(转)

add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http://www.linuxvirtualserver.org/zh/lvs1.html 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目的产生背景和目标,并描述了LVS服务器集群框架及目前提供的软件,列举LVS集群系统的特点和一些实际 应用,最后,本文谈论了LVS

Linux服务器集群LVS

本文主要介绍了Linux服务器集群系统–LVS(Linux Virtual Server),并简单描述下LVS集群的基本应用的体系结构以及LVS的三种IP负载均衡模型(VS/NAT.VS/DR和VS/TUN)的工作原理,以及它们的优缺点和LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法. 参考文献 http://www.linuxvirtualserver.org/zh/index.html 前言 LVS(Linux Virtual Server)的简写,翻译为Linux虚拟服

linux服务器集群重复批量操作脚本实现

http://blog.csdn.net/flyinmind/article/details/8074863  在服务器集群的维护中,经常会遇到同样的操作重复执行很多遍的情况,“登录服务器->做操作->退出”,继续下一个服务器.简单枯燥.容易出错.并且毫无成就感. 我在做push产品的过程中,见到有同事在这个简单重复的工作中,经常犯一些低级错误,心灰意冷.所以我花了一点时间将能自动化的过程全部自动化,操作人员只需做两件事: 1.记录所有服务器的IP.SSH端口.用户名.密码.登录提示符.主路径

Linux服务器集群架构部署搭建(六)数据库服务器MySQL编译安装及主从同步配置(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 数据库企业应用场景 1.1 数据库的企业应用 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小.速度快.总

Linux服务器集群架构部署搭建(二)linux防火墙iptables使用及NAT共享

第一章 外网防火墙部署企业应用 1.1 生产中iptables的实际应用 ①iptables是基于内核的防火墙,功能非常强大,基于数据包的过滤!特别是可以在一台非常低的硬件配置下跑的非常好.iptables主要工作在OSI七层的2.3.4层.七层的控制可以使用squid代理+iptables. ②iptabes:生产中根据具体情况,一般,内网关闭,外网打开.大并发的情况不能开iptables,影响性能,iptables是要消耗CPU的,所以大并发的情况下,我们使用硬件防火墙的各方面做的很仔细.s

Linux服务器集群架构部署搭建(四)WEB服务器LNMP/LAMP搭建部署及站点产品安装(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 集群WEB服务器LNMP生产应用 1.1 Nginx的应用场合:根据功能来进行应用 ①静态服务器(图片,视频服务)国内使用的只有两款,另一个是lighttpd.百度贴吧.豆瓣.html.js.css.flv等. ②动态服务:nginx+fastcgi的方式运行php.jsp.动态的并发很少(根据优化达到500-1500),

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH、批量分发管理、实时同步(2)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第四章 部署配置inotfiy+rsync实时同步 4.1 实时同步inotfiy+rsync的操作步骤 ①备份服务器[email protected]运行rsync进程作为rsync的服务端.NFS作为rsync的客户端. ②在备份服务器安装并正常启动rsync进程服务.并设置修改配置文件.实现远程拉取.推送备份. ③在客户端N

Linux服务器集群架构部署搭建(三)NFS文件系统、SSH通道建立、批量分发管理(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想.  作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 NFS共享服务器的企业应用 1.1 NFS服务--静态数据存储 NFS是(Network File System)主要功能是通过网络让不同的设备端之间可以彼此共享文件或目录.NFS客户端(一般为应用服务器,如WEB)可以通过挂载(mount)方式,将NFS客户端本地系统中(就是一个挂载点)从NFS服务器端共享的数据文件目