1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。


网桥

集线器

二层交换机

三层交换机

路由器

功能

 

连接连个不同的网段

多端口的中继器,数据信号广播转发

工作在数据链路层,数据寻址交换

工作在网络层,具有转发功能

NAT,网关设备,用于分割网络

使用场景

正在退出

信号整合放大

局域网内部

局域网内部

局域网到互联网入口

区别

功能不同且工作在不同的层次和场景

 

2、IP地址的分类有哪些?子网掩码的表示形式及其作用


范围

子网掩码

形式

作用

A

1.0.0.0-126.255.255.255

*/8或255.0.0.0

10.0.0.0-10.255.255.255局域

B

128.0.0.0-191.255.255.255

*/16或255.255.0.0

127.0.0.1专用,局域

172.16.0.0-172.31.255.255

C

192.0.0.0-223.255.255.255

*/24或255.255.255.0

192.168.0.0/24局域

D

224.0.0.0-239.255.255.255

组播

MASK将IP划分为网络ID和主机ID

E

多播保留地址


 

3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。

 

OSI

TCP/IP

功能

设备

应用层

 

应用层

人机交互接口

网络管理软件

表示层

接收来自应用层的动作,并处理成机器指令传递给会话层

会话层

为两个实体的表示层提供建立和使用连接的方法

传输层

传输层

会话层和网络层之间的传输

网络层

网络层

建立维持和终止网络连接

路由器

数据链路层

 

物理接口

建立和管理节点间的链路

交换机,网桥

物理层

为网络连接提供物理介质

网线,网卡,中继器

 

4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

1)物理连接,通过RJ45网线或者光纤连接linux主机和互联接入端;

2)设置IP地址

3)设置子网掩码

4)设置网关

5)设置主DNS服务器,从DNS服务器,备用DNS服务器

6)重新加载网络服务

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes #开机启动
BOOTPROTO=static #手动指定IP地址
IPADDR=192.168.1.77
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
[root@localhost ~]# service network restart
[root@localhost ~]# vi /etc/resolv.conf
nameserver 8.8.8.8 #添加DNS


 

5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

1)使用命令ifconfig eth0 192.168.1.77  临时立即生效,重启系统后失效    
2)修改网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 需要重启后生效    
3)使用图形界面 setup--网络配置  修改后重启服务

 

6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

在线的主机使用绿色显示;

不在线的主使用红色显示;

#!/bin/bash
#v0.1
#lanlin789@qq.com
net=172.16.150.
let online=0
let notonline=0
for i in {1..254};do
if (ping $net$i &> /dev/dull);then 
let online+=1
echo -e “\e[1;32m $net$i \e[0m”
else
let notonline+=1
echo -e “\e[1;31m $net$i \e[0m”
fi
done
echo “online hosts  :$online”
echo  “not online hosts :$notonline”


7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;

CentOS6配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE="eth0"        <网卡号,和ifcfg-eth0对应就可以>
    HWADDR="08:00:27:1C:81:0A"  <网卡的MAC地址>
    ONBOOT="yes"         <在系统引导时是否激活此设备>
    BOOTPROTO=none        <手动设置IP选择none,自动获取选dhcp>
    USERCTL="yes"         <普通用户是否可控制此设备>
    IPADDR=192.168.1.100     <设定本网卡IP地址>
    NETMASK=255.255.255.0    <子网掩码>
    GATEWAY=192.168.1.1      <网关地址>
    DNS1=211.67.32.32       <首选DNS地址>
    DNS2=202.103.44.150      <次选DNS地址>

CentOS 7 配置文件

BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
UUID="7a4d0a76-affb-42ab-b47c-4b548237c5ff"
DEVICE="eno16777736"
ONBOOT="yes"

8、如何给网络接口配置多个地址,有哪些方式?

配置网络别名

      ifconfig eth0:1 192.168.1.77

        新建eth0:0配置文件

              vim /etc/sysconfig/network-scripts/ifcfg-eth0:0

              DEVICE=eth0:0

             BOOTPROTO=static

          IPADDR=192.168.1.77

          NETMASK=255.255.255.0

             ONBOOT=yes

 

 

 

9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。

ip [addr|route|link] 设置地址路由链接

ifconfig查看当前网络连接

[root@localhost ~]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.2.11.194  netmask 255.255.255.0  broadcast 10.2.11.255
        inet6 fe80::20c:29ff:fea6:a732  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a6:a7:32  txqueuelen 1000  (Ethernet)
        RX packets 49848  bytes 50749094 (48.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32761  bytes 3468601 (3.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 808  bytes 90300 (88.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 808  bytes 90300 (88.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


netstat 和ss 查看各种网络服务连接状态

[root@localhost ~]# netstat -tuan 
#-t<tcp>,-u<udp>,-a<all>,-n<numeric>,-l<listening>,... ...
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 10.2.11.194:22          10.2.11.26:52998        ESTABLISHED
tcp        0     52 10.2.11.194:22          10.2.11.26:52980        ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
udp        0      0 0.0.0.0:48559           0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp6       0      0 :::40698                :::*


route 路由相关信息

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.2.11.1       0.0.0.0         UG    100    0        0 eno16777736
10.2.11.0       0.0.0.0         255.255.255.0   U     100    0        0 eno16777736


 

setup 图形管理界面

 

 

10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

    rpm 包管理(原Redhat Packages Manager,RPM Packages Manager)

    rpm -qa 查看所有已安装的包

    rpm -qf Package 查找包

    安装:rpm -ivh Package(-i安装,-v显示正在处理的文件,-h显示进度)

    升级:rpm -uvh Package;此包为升级程序的升级补丁

    卸载:rpm -e Package

    查找已安装中损坏的程序:rpm -Va;可以通过安装光盘中的包进行修复操作。(-V验证)

    --force 强制执行

    --requires 显示包的依赖关系

    --nodeps 忽略依赖关系继续执行

    yum 包管理(Yellow dog Updater Modified)

    安装:yum install package_name

    升级:yum update package_name

    卸载:yum remove package_name

    查看:yum repolist仓库

       yum grouplist 包组

      yum list 所有包

 

11、如何使用发行版光盘作为yum repository,请描述该过程。

    1)挂载光盘:mount /media/cdrom /tmp/contos6.8

    2)编辑配置文件:vim /etc/yum.repo.d/*.repo

    [CentOS-localrepo]

    name = contos-localrepo

    baseurl=file:///tmp/contos6.8/Packages

    gpgcheck=0

    enabled=1

    3)更新yum并使配置生效

    yum clean all

     

     

12、写一个脚本,完成以下功能

(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

(4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
#
let s=0
let k=0
for i in `ls /etc/rc.d/rc3.d/|sed -n  's/^K/stop&/p'`;do
    echo $i
    k+=1
done
for j in `ls /etc/rc.d/rc3.d/|sed -n  's/^S/start&/p'`;do
    echo $j
    s+=1
done
echo "S files:$s"
echo "K files:$k"


[root@localhost ~]# bash sknum.sh 
stopK50netconsole
startS10network
S files:01
K files:01


 

 

 

13、写一个脚本,完成以下功能

(1) 脚本能接受用户名作为参数;

(2) 计算此些用户的ID之和;

#!/bin/bash
#
let idnum=0
for i in $*;do 
    id -u $i &> /dev/null
    if [ $? -ne 0 ] ;then
echo "$i not exist"
    else 
let idnum+=`id -u $i`
    fi
done
echo "all user_id add:$idnum"
 
[root@localhost ~]# bash userid.sh lanin named mysql sshd ll
ll not exist
all user_id add:1126


 

14、写一个脚本

(1) 传递一些目录给此脚本;

(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash
#
let idnum=0
for i in $*;do 
    id -u $i &> /dev/null
    if [ $? -ne 0 ] ;then
echo "$i not exist"
    else 
let idnum+=`id -u $i`
    fi#!/bin/bash
#
let idnum=0
for i in $*;do 
    id -u $i &> /dev/null
    if [ $? -ne 0 ] ;then
echo "$i not exist"
    else 
let idnum+=`id -u $i`
    fi
done
echo "all user_id add:$idnum"
 
done
echo "all user_id add:$idnum"


 

 

15、写一个脚本

通过命令行传递一个参数给脚本,参数为用户名

如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin/bash
#
if  [ $# -lt 1 ];then
    echo "Input a user name at least!"
fi
for i in $*;do 
    id -u $i &> /dev/null
    if [ $? -ne 0 ] ;then
echo "$i not exist"
    elif [ `id -u $i` -lt 500 ];then
echo "$i is system user"
    else 
echo "$i is common user"
    fi
done


[root@localhost ~]# bash  usercommon.sh  apache lanin root
apache is system user
lanin is common user
root is system user


 

 

16、写一个脚本

(1) 添加10用户user1-user10;密码同用户名;

(2) 用户不存在时才添加;存在时则跳过;

(3) 最后显示本次共添加了多少用户;

#!/bin/bash
#
user=user
declare -i num=0
for i in {1..10};do 
    if ( id -u $user$i &> /dev/null ) ;then
continue
    else 
echo "adding $user$i ..."
useradd $user$i
echo "$user$i" | passwd --stdin $user$i &> /dev/null
num+=1
echo "added $user$i finished."
    fi
done
echo "addusers number:$num"


[root@localhost ~]# bash useradd.sh 
adding user1 ...
added user1 finished.
adding user2 ...
added user2 finished.
adding user3 ...
added user3 finished.
adding user4 ...
added user4 finished.
adding user5 ...
added user5 finished.
adding user6 ...
added user6 finished.
adding user7 ...
added user7 finished.
adding user8 ...
added user8 finished.
adding user9 ...
added user9 finished.
adding user10 ...
added user10 finished.
addusers number:10


 

 

 

17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

#!/bin/basj
#v0.1
net=172.16.250.
let online=0
echo "正在执行......"
for i in {20..100};do
    if ( ping -c 1 -w 1 $net$i &> /dev/dull );then
        let online+=1
        echo -e "\e[1;32m $net$i \e[0m"
    fi
done
echo "online hosts  :$online"



linux下禁ping方法:

~]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

这样就可以禁ping了。如果想恢复ping可以执行命令

~]#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

 

 

18、打印九九乘法表;

[root@localhost ~]# cat  jiujiu.sh
#!/bin/bash
#
for i in {1..9};do
    for j in $(seq 1 $i);do 
echo  -ne "$j*$i=$[$j*$i]\t"
    done
    echo
done


[root@localhost ~]# bash  jiujiu.sh
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6  3*3=9
1*4=4 2*4=8  3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81