Linux下系统管理(ubuntu虚路由)

1.Linux启动过程

1.1 Linux下根目录描述

root@ac-dev:/# tree -L 1
.
├── bin	//存放二进制执行命令,busybox等命令集
├── boot	//存放与操作系统内核启动相关的文件,grub文件等
├── dev	//存放设备文件的目录,驱动的设备节点等,可以查看设备号
├── etc	//存放系统管理和配置文件
├── home	//用户的主目录,所有的用户目录都在这个目录下
├── initrd.img -> boot/initrd.img-4.2.0-27-generic
├── lib	//存放库文件,动态链接共享库及驱动文件等
├── lib64 //存放64位库文件
├── lost+found	//丢失恢复文件的文件夹
├── media	//存放媒体文件
├── mnt	//用户临时挂载外部设备,文件系统
├── opt	//额外安装软件所摆放的目录
├── proc	//虚拟文件系统目录,系统内存的映射,proc文件系统的产生地。
├── root	//系统管理员的主目录
├── run //存放系统运行时相关文件
├── sbin	//存放二进制执行命令,跟/bin差不多
├── srv	//系统服务的站点特定数据
├── sys	//存放硬件相关的信息,是虚拟文件系统
├── tmp	//存放临时文件
├── usr	//存放安装软件的目录,一般新装软件安装在该目录下
├── var	//存放系统中经常改变的文件,
└── vmlinuz -> boot/vmlinuz-4.2.0-27-generic

1.1.1 boot目录

该目录是启动Linux时使用的一些核心文件,是内核开始执行用户模式程序之前使用的数据。启动管理GRUB的目录,里面存放的都是GRUB在启动时所需要的配置及各阶段的文件。
GRUB 是引导装入器,负责装入内核并引导系统(如:Linux,windows等)。安装GRUB,会将程序 grub 放到 /usr/sbin 中。
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

root@ac-dev:/boot# tree -L 2
.
├── abi-4.2.0-27-generic
├── config-4.2.0-27-generic
├── grub	//GRUB目录
│   ├── fonts
│   ├── gfxblacklist.txt
│   ├── grub.cfg
│   ├── grubenv
│   ├── i386-pc
│   └── locale
├── initrd.img-4.2.0-27-generic	//系统启动时的模块
├── lost+found
├── memtest86+.bin
├── memtest86+.elf
├── memtest86+_multiboot.bin
├── System.map-4.2.0-27-generic	//系统Kernel中的变量对应表
└── vmlinuz-4.2.0-27-generic	//实际系统所使用的kernel

系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

1.1.2 dev目录

1.1.3 etc目录

/etc目录下一般存的是系统的启动脚本及配置文件等。
ubuntu系统支持/etc/rc.local启动脚本,/etc/rc.local启动具备root权限。

1.1.3.1 环境变量添加

/etc/profile文件会在用户登入时自动运行脚本完成环境变量更新执行。

1.1.4 lib目录

1.1.5 proc目录

/proc目录是一种文件系统,即proc文件系统,常被称作虚拟文件。
/proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。
进程目录下有一系列的参数可以参看,具体如下:

root@ac702-dev:/proc# ll /proc/1
total 0
dr-xr-xr-x   9 root root 0 Sep 10 08:04 ./
dr-xr-xr-x 172 root root 0 Sep 10 08:04 ../
dr-xr-xr-x   2 root root 0 Sep 10 15:48 attr/
-rw-r--r--   1 root root 0 Sep 10 15:48 autogroup
-r--------   1 root root 0 Sep 10 15:48 auxv
-r--r--r--   1 root root 0 Sep 10 08:04 cgroup
--w-------   1 root root 0 Sep 10 15:48 clear_refs
-r--r--r--   1 root root 0 Sep 10 08:04 cmdline
-rw-r--r--   1 root root 0 Sep 10 15:48 comm
-rw-r--r--   1 root root 0 Sep 10 15:48 coredump_filter
-r--r--r--   1 root root 0 Sep 10 15:48 cpuset
lrwxrwxrwx   1 root root 0 Sep 10 15:48 cwd -> //
-r--------   1 root root 0 Sep 10 08:11 environ
lrwxrwxrwx   1 root root 0 Sep 10 08:04 exe -> /sbin/init*
dr-x------   2 root root 0 Sep 10 15:48 fd/
dr-x------   2 root root 0 Sep 10 15:48 fdinfo/
-rw-r--r--   1 root root 0 Sep 10 15:48 gid_map
-r--------   1 root root 0 Sep 10 15:48 io
-r--r--r--   1 root root 0 Sep 10 08:11 limits
-rw-r--r--   1 root root 0 Sep 10 15:48 loginuid
dr-x------   2 root root 0 Sep 10 15:48 map_files/
-r--r--r--   1 root root 0 Sep 10 15:48 maps
-rw-------   1 root root 0 Sep 10 15:48 mem
-r--r--r--   1 root root 0 Sep 10 15:48 mountinfo
-r--r--r--   1 root root 0 Sep 10 15:48 mounts
-r--------   1 root root 0 Sep 10 15:48 mountstats
dr-xr-xr-x   5 root root 0 Sep 10 15:48 net/
dr-x--x--x   2 root root 0 Sep 10 15:48 ns/
-r--r--r--   1 root root 0 Sep 10 15:48 numa_maps
-rw-r--r--   1 root root 0 Sep 10 15:48 oom_adj
-r--r--r--   1 root root 0 Sep 10 15:48 oom_score
-rw-r--r--   1 root root 0 Sep 10 15:48 oom_score_adj
-r--------   1 root root 0 Sep 10 15:48 pagemap
-r--------   1 root root 0 Sep 10 15:48 personality
-rw-r--r--   1 root root 0 Sep 10 15:48 projid_map
lrwxrwxrwx   1 root root 0 Sep 10 08:11 root -> //
-rw-r--r--   1 root root 0 Sep 10 15:48 sched
-r--r--r--   1 root root 0 Sep 10 15:48 schedstat
-r--r--r--   1 root root 0 Sep 10 15:48 sessionid
-rw-r--r--   1 root root 0 Sep 10 15:48 setgroups
-r--r--r--   1 root root 0 Sep 10 15:48 smaps
-r--------   1 root root 0 Sep 10 15:48 stack
-r--r--r--   1 root root 0 Sep 10 08:04 stat
-r--r--r--   1 root root 0 Sep 10 15:48 statm
-r--r--r--   1 root root 0 Sep 10 08:04 status
-r--------   1 root root 0 Sep 10 15:48 syscall
dr-xr-xr-x   3 root root 0 Sep 10 15:48 task/
-r--r--r--   1 root root 0 Sep 10 15:48 timers
-rw-r--r--   1 root root 0 Sep 10 15:48 uid_map
-r--r--r--   1 root root 0 Sep 10 09:47 wchan

参考:https://blog.csdn.net/mediatec/article/details/88578101
还有很多系统相关的信息,在这里可以查看,如下等等:

# ls /proc //查看proc文件系统中的参数信息项等
#cat /proc/cpuinfo	//查看CPU信息
#cat /proc/meminfo	//查看内存信息
#cat /proc/interrupts	//查看中断信息

1.1.6 sys目录

sys目录基本同proc目录,也是一种虚拟文件系统。

1.2 Linux启动流程

在这里插入图片描述

1.3 ubuntu启动流程

在这里插入图片描述

1.4 Linux系统版本描述

参考:https://blog.csdn.net/qq_35361115/article/details/100567834

1.5 clonezilla 制作clonezilla USB启动盘

1.下载 clonezilla制作文件,下载地址:https://clonezilla.org/downloads.php
选择ubuntu live release版本下载,是一个zip压缩文件:clonezilla-live-20200302-eoan-amd64.zip
2.将clonezilla制作文件拷贝到U盘中
3.插入USB虚拟机下,使其在虚拟机下。
4.使用sudo fdisk -l查看U盘是否已经挂载成功。

#fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63    31129599    15564768+   c  W95 FAT32 (LBA)

5.mount U盘到ubuntu下,将clonezilla制作文件拷贝到相应目录下

~# mount /dev/sdb1 /tmp
~# cp /tmp/clonezilla-live-20200302-eoan-amd64.zip  /home/chenchao/

6.umount(umount /dev/sdb1)之后再进行格式化,命令:mkfs.vfat -F 32 /dev/sdb1,再重新mount。

~# mkfs.vfat -F 32 /dev/sdb1
mkfs.fat 3.0.26 (2014-03-07)

7.unzip /home/chenchao/clonezilla-live-20200302-eoan-amd64.zip -d /tmp
8.进入/tmp/utils/linux/目录,运行bash makeboot.sh /dev/sdb1;一路选择y,将启动盘制作成功。

# bash makeboot.sh /dev/sdb1
This command will install MBR and syslinux/extlinux bootloader on /dev/sdb
Clonezilla files are assumed to be on /dev/sdb1
--------------------------------------------
Machine: VMware Virtual Platform:
Model: aigo U268 (scsi)
Disk /dev/sdb: 15.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  15.9GB  15.9GB  primary  fat32        boot, lba

--------------------------------------------
Are you sure you want to continue?
[y/n] y
OK! Let's do it!
--------------------------------------------
File system of /dev/sdb1: vfat
--------------------------------------------
Do you want to install MBR on /dev/sdb on this machine "VMware Virtual Platform"                                                                                                              ?
[y/n] y
OK! Let's do it!
Running: cat "/tmp/utils/mbr/mbr.bin" > /dev/sdb
--------------------------------------------
Do you want to install the syslinux boot files on /dev/sdb1 on this machine "VMw                                                                                                             are Virtual Platform" ?
[y/n] y
OK! Let's do it!
A filesystem supporting Unix file mode for syslinux is required. Copying syslinu                                                                                                             x to /tmp/linux_tmp.k5R9mI
'/tmp/utils/linux/x64/syslinux' -> '/tmp/linux_tmp.k5R9mI/syslinux'
Running: "/tmp/linux_tmp.k5R9mI/syslinux" -d syslinux -f -i "/dev/sdb1"
//NOTE// If your USB flash drive fails to boot (maybe buggy BIOS), try to use "s                                                                                                             yslinux -d syslinux -fs /dev/sdb1", i.e. running with "-fs".
syslinux ran successfully in installation mode.
Done!
root@ac702-dev:/tmp/utils/linux# umount /dev/sdb1
umount: /tmp: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

9.umount,拔出U盘即可。

1.6修改主机名

#cat /etc/hostname
hostname	//修改此名字

#cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       hostname	//修改此名字与上面的名字一致

1.7 shell操作

1.7.1 ctrl+命令

组合键信号类型意义
Ctrl+CINT信号interrupt停止当前运行的作业
Ctrl+ZTSTP信号terminal stop使当前运行的作业暂时停止(转入阻塞态)
Ctrl+\QUIT信号强化退出
Ctrl+YTSTP信号当进程从中端读取输入数据时,暂时停止该进程

1.7.2 $命令

符号表示含义
$1就是该shell脚本第一个入参,第几个用数字直接表示,但两位数以上,则必须使用 {} 符号来括住,如${10};$0代表脚本命令自身。
$#脚本所带的个数,即脚本有多少的输入参数
$?是上一指令的返回值,成功是0,不成功是1。
$*所有脚本参数的内容:就是调用调用本bash shell的参数。
$@基本上与上面$*相同。
$$Shell本身的PID(ProcessID),即当前进程的PID
$!Shell最后运行的后台Process的PID
$-使用Set命令设定的Flag一览

1.7.3 数组

数组表示法中括号:

a[1]=11
a[2]=22
a[3]=
a[4]=44

数组表示法小括号:

a=(11 22 33 44)

数组表示法@/*:

a[@] 表示整个数组的所有元素
a[*]

1.7.4 正则表达式

正则表达式是由一串字符和元字符构成的字符串。主要功能是文本查询和字符串操作。主要被sed,awk等使用。

符号意义举例
*0个或多个在*字符之前的那个普通字符
.匹配任意字符
^匹配行首,或后面字符的非
$匹配行尾
[]匹配字符集合
|转义符,屏蔽一个元字符的特殊意义
\<\>精确匹配符号
\{n\}匹配前面字符出现n次
\{n,\}匹配前面字符至少出现n次
\{n,m\}匹配前面字符出现n~m次
?匹配0个或1个在其之前的那个普通字符
+匹配1个或多个在其之前的那个普通字符
()表示一个字符集合或用在expr中
I表示"或",匹配一组可选的字符

1.7.5 通配符

通配符包括正则表达式元字符?、*、[]、{}、^等但是通配符的含义与正则表达式不一样。

符号含义
*任意位的任意字符
表示一个任意字符
^表示取反

1.7.6 定位文本

选项含义
xx为指定的行号
x,y指定从x到y的行号范围
/pattern/查询包含pattern值的行
/pattern/pattern/查询包含两个pattern值的行
/pattern/,x从与pattern值的匹配行到x行之间的行
x,/pattern/从x行到与pattern的匹配行之间的行
x,y!查询不包括x和y行号的行

1.7.6 sed

实例1:sed s命令将替换后的全部文本都输出,结合-n,p选项只打印替换行。注:这里仅替换所在行的首先匹配的字符串。

sed -n ‘s/被替换的字符串/新字符串/p' 输入文件
#sed -n ’s/chen/CHEN/p' inputfile	//将有chen的行字符串替换为CHEN,并输出修改行。

对所有匹配值进行替换需要加g

sed -n 's/chen/CHEN/pg' inputfile

对匹配值写入新文件

sed -n '1,5 w outfile' inputfile 		//将inputfile中的1~5行写入到outfile文件

1.7.7 awk

awk认为输入文件是结构化的。每一行由记录域和分隔符组成。分隔符可以是空格,tab键,或其他符号。$1,$2分别表示第一个域,第二个域;$0代表所有域。
awk循环执行体前后,分别由BEGIN,END作为循环之前执行,循环之后执行。

改变分隔符实例,一般默认分隔符为空格,现在改为table键作为分隔符。

awk -F“\t" '{print $3}' awkfile
awk 'BEGIN {FS="\t"} {print $3}' awkfile

环境变量描述

变量描述
$n当前记录的第n个字段,字段间由FS分隔。
$0完整的输入记录。
ARGC命令行参数的数目。
ARGIND命令行中当前文件的位置(从0开始算)。
ARGV包含命令行参数的数组。
CONVFMT数字转换格式(默认值为%.6g)
ENVIRON环境变量关联数组
ERRNO最后一个系统错误的描述
FIELDWIDTHS字段宽度列表(用空格键分隔)
FILENAME当前文件名
FNR同NR,但相对于当前文件。
FS字段分隔符(默认是空格)。
IGNORECASE如果为真,则进行忽略大小写的匹配。
NF当前记录中的域数量
NR当前记录数
OFMT数字的输出格式(默认值是%.6g)。
OFS输出字段分隔符(默认值是一个空格)。
ORS输出记录分隔符(默认值是一个换行符)。
RLENGTH由match函数所匹配的字符串的长度。
RS记录分隔符(默认是一个换行符)。
RSTART由match函数所匹配的字符串的第一个位置。
SUBSEP数组下标分隔符(默认值是\034)。

字符串处理函数

函数含义
gsub(r,s)在整个$0中用s替代r
gsub(r,s,t)在整个t中用s替代r
index(s,t)返回s中字符串t的第一位置
length(s)返回s长度
match(s,r)测试s是否包含匹配r的字符串
split(s,a,fs)在fs上将s分成序列a
sprint(fmt,exp)返回经fmt格式化后的exp
sub(r,s)用$0中最左边最长的子串代替s
substr(s,p)返回字符串s中从p开始的后缀部分
substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分

1.7.8

2. 网络服务

2.1 DHCP

2.2 DNS

2.3 ARP

2.3.1 arp

1.arp表刷新时间,系统配置为30秒。

#cat /proc/sys/net/ipv4/neigh/eth0/base_reachable_time
30

2.arping

3.VLAN配置

4. 网络配置

4.1 网卡驱动调优

参考:https://my.oschina.net/u/4361306/blog/3477958

4.2 三层处理

4.2.2 route

4.2.3

4.3 桥接配置

1.ubuntu系统配置文件配置桥接,配置br0,包含GE2/3/4/5四个网口,GE1独立做管理口或虚拟路由的上行口。

root@ICS-PLATFORM:~# cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        GE1:
            dhcp4: no
            addresses: [192.168.2.51/22]
        GE2:
            dhcp4: no
        GE3:
            dhcp4: no
        GE4:
            dhcp4: no
        GE5:
            dhcp4: no
    bridges:
        br0:
            interfaces: [GE5, GE4, GE3, GE2]
            dhcp4: no
            addresses: [192.168.3.51/24]
    version: 2

2.配置STP服务,防止环回

#brctl stp br0 on
#brctl showstp br0	//查看端口状态

5. ubuntu系统配置

5.1 ssh服务安装

  1. 查看ssh服务是否安装命令
# dpkg -l | grep ssh
  1. 安装ssh服务
# sudo apt-get install openssh-server
  1. 查看ssh服务是否默认安装启动
# ps -e | grep ssh
  1. 启动/停止ssh服务
# sudo /etc/init.d/ssh stop
# sudo /etc/init.d/ssh start
  1. ssh登入测试
#ssh localhost
  1. root支持远程SSH登入配置
vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin yes

5.2 samba

添加smb用户

# sudo smbpasswd -a chenchao  //配置密码

5.3 添加用户

  1. useradd
      (1)会在/etc/passwd下面添加注册的账户:
      (2)会在/etc/shadow 文件下建立注册用户的密码:
      (3)不会在/home下建立一个文件夹username:
  2. adduser
      (1)会在/etc/passwd下面添加注册的账户:
      (2)会在/etc/shadow 文件下建立注册用户的密码:
      (3)会在/home下建立一个文件夹username
  3. useradd -m username跟adduser一样,可以建立一个文件夹username,但是没有设置密码。
  4. 用户增加sudo权限:sudo useradd sudo

5.4 systemd 服务化例程安装

创建一个cli服务例程

[Unit]
Description=cli service
After=syslog.target network-online.target

[Service]
Environment="LD_LIBRARY_PATH=/root/cli/usr/lib:/usr/lib:/lib"
ExecStart=/root/cli/usr/bin/glcli -f /root/cli/etc/glcli/glscli.conf
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=5s
User=root

[Install]
WantedBy=multi-user.target

服务化例程安装

sudo cp ./cli.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable cli

服务化例程管理
启动:systemctl start cli
停止:systemctl stop cli
状态:systemctl status cli

6 open vswitch(虚拟交换机)

6.1 概念

Openvswitch是一个优秀的开源软件交换机,支持主流的交换机功能,比如二层交换、网络隔离、QoS、流量监控等,而其最大的特点就是支持openflow,openflow定义了灵活的数据包处理规范。为用户提供L1-L4包处理能力。OVS支持多种Linux虚拟化技术,包括Xen、KVM以及VirtualBox。此外,OVS支持硬件交换机。

6.2 安装

ubuntu下支持open vswitch,使用ubuntu18.04LTS安装。

#sudo apt-get install openvswitch-switch openvswitch-common
#sudo ovs-vsctl -V			//查看版本号
#sudo ovs-vsctl show		//查看网桥

6.3 命令使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值