Git传输协议+gre、pptp…
前日补充
ssh方式发送git
案例
#2.100
git init /var/lib/git/project #建立仓库
#2.200
ssh-keygen -f /root/.ssh/id_rsa -N '' #生成密钥 密码为空
ssh-copy-id 192.168.2.100 #发送密钥到2.100
git clone 192.168.2.100:/var/lib/git/project #克隆仓库 发现不用密码了
cd project #进入工作目录
echo "no password" > 1.txt #创建新文件 添加进本地仓库
git add 1.txt
git commit -m "1.txt++"
git push #推送本地仓库到服务器2.100仓库 发现不用输入密码了
git方式发送git
案例
#2.100
git init /var/lib/git/project #建立仓库
yum -y install git-daemon #下载git协议所需包
vim /usr/lib/systemd/system/git@.service #修改配置文件
=============================
[Unit]
Description=Git Repositories Server Daemon
Documentation=man:git-daemon(1)
[Service]
User=nobody
ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose --enable=receive-pack #添加--enable 使得仓库可写
#为了让2.200客户端能够推送本地仓库到2.100这个服务器仓库
StandardInput=socket
==============================
systemctl stop firewalld
setenforce 0
systemctl start git-socket #启动git服务 测试先关闭防火墙和selinux的干扰
chmod -R 777 /var/lib/git #权限全开 测试无所谓不需要太精确
#2.200
git clone git://192.168.2.100/project #因为用的是git协议 所以进入就是/var/lib/git/了
cd project
echo "git no password" > 2.txt
git add 2.txt
git commit -m "git 2.txt++"
git push
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git://192.168.2.100/project #注意这里发送的协议是git
6f436f2..615dc7b master -> master
网站http方式发送git
#2.100
yum -y install httpd gitweb #安装相关包
git init /var/lib/git/project
vim +10 /etc/gitweb.conf #打开并且光标到第10行
=======================================
out $projectroot = "/var/lib/git"; #去掉注释
=======================================
systemctl start httpd #启动httpd服务
#浏览器输入 http://192.168.2.100/git/ 即可看见仓库了
制作rpm包
yum -y install rpm-build
rpmbuild -ba nginx.spec #会失败 但是会创建rpmbuild目录
ls rpmbuild
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS #有一堆东西
cp nginx-1.17.6.tar.gz rpmbuild/SOURCES/ #将压缩包放入SOURCES目录下
vim rpmbuild/SPECS/nginx.spec #修改配置文件
=========================================
Name: nginx #对应压缩包名字
Version: 1.17.1 #对应压缩包版本
Release: 1
Summary: test #描述 随便写
#Group:
License: GPL #协议GPL
URL: www.wojia.com #自家网站
Source0: nginx-1.17.6.tar.gz #SOURCES目录下对应包信息 要一字不差
#BuildRequires: #提示安装所需前置包
#Requires: #提示运行所需包 都是提示 不会自己下的
%description
test~~~~~~ #详细描述
%post #添加额外操作
useradd nginx -s /sbin/nologin #下面编译指定了用户 所以附加个创建用户操作
%prep #上面写完了 下面开始本机测试
%setup -q #解包 进入包目录
%build #宣告开始编译
./configure --user=nginx #调用gcc开始编译
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/* #源码编译完成 把/usr/local/nginx/下的所有东西打包
%changelog
==========================================
yum -y install gcc pcre-devel openssl-devel #nginx源码编译所需组件
rpmbuild -ba rpmbuild/SPECS/nginx.spec #开始解压在制作rpm包
ls rpmbuild/RPMS/x86_64/ #看下
nginx-1.17.6-1.x86_64.rpm nginx-debuginfo-1.17.6-1.x86_64.rpm #有两个包了
#成功
rpm -qpi rpmbuild/RPMS/x86_64/nginx-1.17.6-1.x86_64.rpm #查看rpm包信息
Name : nginx
Version : 1.17.6
Release : 1
Architecture: x86_64
Install Date: (not installed)
Group : Unspecified
Size : 765158
License : GPL
Signature : (none)
Source RPM : nginx-1.17.6-1.src.rpm
Build Date : Thu 17 Dec 2020 06:27:53 AM EST
Build Host : web1
Relocations : (not relocatable)
URL : www.wojia.com
Summary : test
Description :
test~~~~~~~~~~~~
#有之前自己添加的信息
gre pptp l2tp
使用gre技术实现(两台linux2.100 2.200)
GRE介绍
- GRE隧道是一种IP-over-IP的隧道,是通用路由封装协议,可以对某些网路层协议的数据报进行封装,使这些被封装的数据报能够在IPv4/IPv6 网络中传输。Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程。
- 要在Linux上创建GRE隧道,需要ip_gre内核模块,它是GRE通过IPv4隧道的驱动程序。
实现案例
#2.100
modprobe ip_gre #内核开启
lsmod | grep ip_gre #看一下
ip_gre 22707 0
ip_tunnel 25163 1 ip_gre
gre 13144 1 ip_gre
ip tunnel add tun1 mode gre remote 192.168.2.200 local 192.168.2.100
#add tun1 取名tun1 mode gre 使用gre remote 目标2.200 local 本机2.100 一般是公网Ip 测试就私网了
ip address show
....
6: tun1@NONE: <POINTOPOINT,NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 192.168.2.100 peer 192.168.2.200
#有了tun1
ip tunnel del tun0 #删除
ip address add 10.10.10.10/8 peer 10.10.10.5/8 dev tun1
ip address show
.....
6: tun1@NONE: <POINTOPOINT,NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 192.168.2.100 peer 192.168.2.200
inet 10.10.10.10 peer 10.10.10.5/8 scope global tun1 #这里
valid_lft forever preferred_lft forever
#多了两个私有ip 分别定义自己为10.10.10.10 对方是10.10.10.5
ip link set tun1 up #激活配置
ip address show #再看下
6: tun1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default qlen 1000 #多了UP LOWER_UP
link/gre 192.168.2.100 peer 192.168.2.200
inet 10.10.10.10 peer 10.10.10.5/8 scope global tun1
valid_lft forever preferred_lft forever
inet6 fe80::5efe:c0a8:264/64 scope link
valid_lft forever preferred_lft forever
#2.200
modprobe ip_gre #开启模块
ip tunnel add tun0 mode gre remote 192.168.2.100 local 192.168.2.200#建立公网连接
ip address add 10.10.10.5/8 peer 10.10.10.10/8 dev tun0 #定义私网ip
ip link set tun0 up #激活
ip address show
......
5: tun0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default qlen 1000
link/gre 192.168.2.200 peer 192.168.2.100
inet 10.10.10.5 peer 10.10.10.10/8 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::5efe:c0a8:2c8/64 scope link
valid_lft forever preferred_lft forever
#2.200也完成了
#用私网地址ping一下
ping 10.10.10.10 #本机私网地址为10.10.10.10 目标为10.10.10.5
使用pptp实现(支持windows)
pptp不怎么安全
#自己先弄到pptpd-1.4.0-2.el7.x86_64.rpm
yum -y install pptpd-1.4.0-2.el7.x86_64.rpm
vim /etc/pptpd.conf #修改配置文件
==================================
localip 192.168.2.100 #自身公网ip 测试就用私网了
remoteip 10.10.10.10-18 #分配私网ip 10.10.10.10~18
==================================
vim /etc/ppp/options.pptpd #配置DNS服务器
====================================
ms-dns 8.8.8.8 #谷歌DNS 全球可用 可以自己搜所在城市的DNS服务器
====================================
vim /etc/ppp/chap-secrets #建立客户端账户密码
=============================================
#client server secret IP addresses #用户 服务 密码 ip限制
tom * 123456 *
===============================================
#配置完了 开服务
systemctl start pptpd #开启服务
ss -nutlp | grep pptpd #查看服务端口
tcp LISTEN 0 3 *:1723 *:* users:(("pptpd",pid=6797,fd=6))
#占用端口1723
#windows下访问
#打开网络和Internet设置
#VPN对话框 然后配上相应信息 保存 连接 断网一气呵成
使用l2tp+IPsec 实现(支持windows)
l2tp完成配置 IPsec提供安全性
#2.100
yum -y install libreswan #加密包
cp myipsec.conf /etc/ipsec.d/ #配置文件自己找的
vim /etc/ipsec.d/myipsec.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=192.168.2.100 #公网ip 测试用私网
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
==========================================
vim /etc/ipsec.secrets
==========================================
include /etc/ipsec.d/*.secrets
192.168.2.100 %any: PSK "randpass"
#自己ip 能访问的客户机ip PSK预共享秘钥,密码是randpass
==========================================
#加密完成
yum -y install xl2tpd-1.3.8-2.el7.x86_64.rpm #xl2tpd包自己下的
vim /etc/xl2tpd/xl2tpd.conf
=================================
[lns default]
ip range = 9.9.9.9-9.9.9.18 #给客户分配私网Ip范围
local ip = 192.168.2.100 #vpn服务器公网IP
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
==================================
vim /etc/ppp/options.xl2tpd
===================================
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
noccp
auth
#crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
#lock
proxyarp
connect-delay 5000
require-mschap-v2
===================================
vim /etc/ppp/chap-secrets #客户端账号密码
=====================================
tom * 123456 *
====================================
systemctl start ipsec
systemctl start xl2tpd
ss -nutlp | grep xl2tpd
ss -nutlp | grep :500
#windows中测试 同上
将命令添加到systemctl中
ls /usr/lib/systemd/system
#一堆.service
vim /opt/test.sh #自己写个脚本测试 当成命令用
==================
#!/bin/bash
while :
do
ehco xyz
echo yyy
sleep 1
done
=====================
chmod a+x test.sh
cd /usr/lib/systemd/system
cp crond.service test.service
vim test.service
==========================
[Unit]
Description=test #修改为自己的服务 描述信息
After=auditd.service systemd-user-sessions.service time-sync.target
#After 必须在这些网络服务启动后才会开启服务
[Service]
#EnvironmentFile=/etc/sysconfig/crond #测试不需要
ExecStart=/opt/test.sh #执行东西
ExecReload=/bin/kill -HUP $MAINPID #重新加载配置文件 MAINPID变量
KillMode=process #关闭主进程
[Install]
WantedBy=multi-user.target #开机自启的前提
=============================
systemctl daemon-reload #重新加载一下 刷出新加的test
systemctl start test #启动看下
systemctl status test #查看下 发现后台输出了
systemctl stop test #关了
#添加nginx进去
cd /usr/lib/systemd/system
cp httpd.service nginx.service
==============================
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
# 网络服务 远程文件服务 DNS服务
[Service]
Type=forking #多进程
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT ${MAINPID}#不用nginx -s stop 因为nginx要是出问题就关不了
[Install]
WantedBy=multi-user.target
==============================
systemctl daemon-reload #刷新下
ss -nutlp | grep :80 #查下80端口有没有被占用 有就停掉
systemctl start nginx #启动
curl 192.168.2.100 #直接访问测试下
ss -nutlp | grep :80 #也可以看下端口服务
systemctl restart nginx
systemctl stop nginx #都测试下没问题