Linux基本服务——多种VPN(GRE、PPTP、L2TP+IPSec)

VPN    网络隧道

    搭建VPN:VPN有很多个版本GRE(Linux专用),PPTP(兼容Windows和Linux),L2TP+IPSec(安全的加密)等

GRE--VPN 

(要搭建VPN的两个设备都要进行,不过注意配置的时候里面的IP要分清楚自己的和对方的)
      1. 启用模块 
       modprobe ip_gre
         查看是否加载了 lsmod  | grep ip_gre

     2. 创建VPN
       ip tunnel add tun0  mode gre remote 目标IP local 本机IP    # 新建一个VPN网卡
       ip link show | grep tun0            # 查看隧道信息
       ip link set tun0 up                # 启动隧道

     3. 赋予VPN中的IP
       ip addr add 本机设置的VPN内部IP/网关 peer 另一个机器的VPN内部IP/网关 dev tun0
         查看IP :  ip a s


PPTP--VPN
      1. 装包:pptpd-1.4.0-2.el7.x86_64.rpm,这个不在默认光盘,可以到资源中下载,也可以去官网下载

      2. 配置:修改配置文件
        主配置文件: /etc/pptpd.conf 在末尾有模板,将其修改为:

localip 本机的IP
remoteip 配置VPN中的IP范围  格式:IP1-IP2连续的IP  IP3,IP4不连续的IP

        设置配置文件:/etc/ppp/options.pptpd 也是有模板的,搜索ms-dns就可以了,去掉注释进行修改

ms-dns 具体DNS服务器的IP
# 其中有一行 name 后面是pptp的服务器名,不需要改,只要知道即可

         密码配置文件:/etc/ppp/chap-secrets

# client  server        secret  IP addresses
   用户名    服务器标记(*)    密码      客户端(*)

         路由配置文件:/proc/sys/net/ipv4/ip_forward 打开Linux的路由转发功能,1是开,0是关45

命令:echo "1" > /proc/sys/net/ipv4/ip_forward 

L2TP+IPSec--VPN

   搭建IPSec加密软件

      1. 装包:yum install -y libreswan

      2. 修改配置文件:

   主配置文件 /etc/ipsec.conf
         最后有一个句话:include /etc/ipsec.d/*.conf
         这就和httpd的配置文件一样,在/etc/ipsec.d/文件名.conf都可以作为配置文件
         所以只要创建一个文件,然后就可以操作了

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

# 加密算法
conn IDC-PSK-noNAT
    authby=secret
        ike=3des-sha1;modp1024
        phase2alg=aes256-sha1;modp2048
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=3h
    type=transport

    left=服务器VPN的真实IP
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

   预共享密钥 PSK 的配置文件:/etc/ipsec.secrets
         和主配置文件一样,在 /etc/ipsec.d/文件名.secrets都可以作为其配置文件

VPN服务器的真实IP   %any:    PSK    "psk密钥信息" 

      3. 启服务:systemctl restart ipsec
         查看服务: netstat -ntlup | grep pluto

   注意:这软件,软件包名是libreswan,配置文件和启动服务是ipsec,查看服务的是pluto

   搭建XL2TP服务
      1. 装包:yum install xl2tpd-1.3.8-2.el7.x86_64.rpm

      2. 配置:修改配置文件
   主配置文件: /etc/xl2tpd/xl2tpd.conf 

…………
ip range = 分配给客户端的IP范围 
local ip = VPN服务器的IP地址

   认证配置文件: /etc/ppp/options.xl2tpd

修改配置文件:
删除或者注释    crtscts
删除或者注释    lock
开启     require-mschap-v2

或者用命令:

sed -i '/\(crtscts\)\|\(lock\)/s/^/#/' /etc/ppp/options.xl2tpd
sed -i '/require-ms/s/#//' /etc/ppp/options.xl2tpd

   修改密码文件: /etc/ppp/chap-secrets ,和上文的PPTP配置一样

用户名    服务器标记(*)    密码      客户端(*)

      3. 启动服务
        systemctl start xl2tpd

        查看服务是否启动netstat  -ntulp |grep xl2tpd 

  附注:

    如想作VPN转发,搭建完VPN后需要开启路由功能,配置好NAT才能实现与外界通讯

  路由配置文件:/proc/sys/net/ipv4/ip_forward 打开Linux的路由转发功能,1是开,0是关45
命令:echo "1" > /proc/sys/net/ipv4/ip_forward 

   配置路由功能的 NAT, 将私有IP转为公网IP
命令: iptables -t nat -A POSTROUTING -s 隧道内的私有IP(也可以是 网段/子网掩码) -j SNAT --to-source 公有IP


NTP 

   Network Time Protocol(网络时间协议)
    采用的是分层设计,每个设备可以连接其他服务器同步时间,同步后自己也可以成为服务器,为其他设备同步时间,这就是分层设计,不需要每次都和一个服务器进行同步,实现分压,不过Stratum层的总数限制在15以内。
    举例说就是,国家一个NTP服务器,一个设备a链接它,进行时间同步后,他和设备b、设备c链接后,设备b和c就会把a当作NTP服务器同步时间,这就形成了3层结构,以此类推可以理解多层的含义了。
    当然NTP如果要作为一个服务器,配置中需要修改,开启服务功能

  搭建NTP服务
    1. 装包:  yum -y install chrony

    2. 修改配置文件: /etc/chrony.conf

server 服务器的IP iburst
allow IP 或者是 网段/子网掩码
deny IP 或者是 网段/子网掩码
local stratum 层数(必须大于上一层服务器的层数,小于15)

    3. 启动服务
     systemctl  restart  chronyd
     systemctl  enable  chronyd

    注意:时间同步的一个问题 !闰秒(某分钟59秒后一秒是60秒再之后才调转00,诸多软件不识别 某分60秒)! 在出现闰秒出现前关闭连接外网的NTP服务器。


pssh
   远程套件工具,同时对多个程序进行远程控制与操作

    1. 装包 :rpm -ivh  pssh-2.3.1-5.el7.noarch.rpm  (这个包不在光盘中)

    2. 命令  pssh  选项 ( 这些选项在下面所有命令中都能用 )

-A 使用密码远程其他主机(不写默认使用密钥),一会交互式输入密码即可
-i 将输出显示在屏幕
-H '主机名或者IP' 设置需要连接的主机
-h '记录了主机名或者IP的文件' 设置主机列表文件
-p 设置并发数量
-t 设置超时时间
-o 目录 设置标准输出信息保存的目录,然后目录下会出现 -H 后的数据,或者 -h 读取的文件中的数据同名的文件
-e 目录 设置错误输出信息保存的目录,如果目录下有同名文件会覆盖
-x ssh后要添加的参数 传递参数给ssh( -o StrictHostKeyChecking=no 的意思就是第一次连接的时候不需要输入yes)

  第一次用的时候: pssh -A -H 'IP' -x '-o StrictHostKeyChecking=no' 命令
    之后使用就不需要 -x '-o StrictHostKeyChecking=no'了
  如果没有-i,命令返回的信息不会出现在屏幕上,但是,pssh会根据命令执行成功与否反映出来SUCCESS或FAILURE。
 
  可以在一个文件和中写好IP信息,文件中每列格式是(可以不写用户,默认以当前使用命令的用户的身份): [root@]IP ,然后用 -h 文件名 即可,就不需要反复写IP了

  附: 非交互的创建密钥 ssh-keygen -N '' -f /root/.ssh/id_rsa
      这样就可以在脚本中创建密钥,不过没必要重复创建,所以可以判断一下密钥是否存在

[ ! -f /root/.ssh/id_rsa ] && ssh-keygen -N '' -f /root/.ssh/id_rsa 

      创建密钥后,传递密钥到指定IP即可  ssh-copy-id  IP
      有密钥后,就不需要使用 -A 来输入密码了。

   3. 批量拷贝命令 pscp.pssh
     拷贝文件:pscp.pssh -A -H 'IP'  本地文件1 本地文件2 …… 本地文件n  目标主机保存的位置(不需要IP,直接写绝对路径)
                 把多个文件进行批量拷贝,最后一个路径就当作目标主机保存的位置  
     拷贝目录:pscp.pssh -A  -r -H 'IP'  本地目录1 本地目录2 …… 本地目录n  目标主机保存的位置
         和拷贝文件差不多,只需要一个选项-r即可

   4. 批量收集 pslurp
      pslurp  -A -H 'IP' [ -L 指定下载到的位置 ]  目标主机的文件位置  /下载后文件的命名
        先在指定位置下按照IP创建同名的目录,再把目标主机中的某个文件全部下载到本地指定位置下指定IP的目录,并命名成指定名字
        如果没有 -L 位置默认为 当前目录
        加上 -r 就可以收集目录

   5.  批量杀死 pnuke
       pnuke -A -H 'IP'  关键字
       其实就是远程到另外设备上用pkill进行查杀

猜你喜欢

转载自blog.csdn.net/Yu1543376365/article/details/82912995