天天看点

Linux网络管理基础

Linux网络管理

涉及到的命令:

ifconfig、ifup、ifdown、ping、route、setup、chkconfig、reset、dig、ip、traceroute、mtr、netstat、ss、iftop、nethogs

==============================================================

ISO定义OSI模型(七层)

物理层    定义物理设备规范及电气信号特性

数据链路层    本地网络通信,定义MAC地址

网络层    定义网络通信,定义IP地址

传输层    进程间通信,定义进程地址(端口号)    IP+端口号=套接字

会话层    会话建立和拆除   

表示层    数据表示方式

应用层    完成数据交换

TCP/IP模型(4层)

物理层

互联网层

传输层

应用层

传输层:

    进程启动时向内核注册使用某端口,所以当网络报文到达时,首先到达内核

应用层:

    进程负责处理应用层协议

修改主机IP方法:

1、ifconfig命令

2、ip命令

3、编辑配置文件

4、GUI命令(不常用)

5、TUI命令(不常用)  setup命令,根据向导修改

网卡接口命名方式:

    以太网:ethx  (有些机器是emx)

    centos7的叫ensx

PPP网络:pppx

本地换回接口:lo 接口

    仅用于本机上的进程间基于内核完成通信

==================================================================

ifconfig命令

查看、修改网卡属性

ifconfig输出结果解释:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:21:F3:BE  

          inet addr:172.20.1.33  Bcast:172.20.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe21:f3be/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:266187 errors:0 dropped:0 overruns:0 frame:0

          TX packets:14251 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:25547336 (24.3 MiB)  TX bytes:1400737 (1.3 MiB)

大致可以得到以下内容:

网络类型是以太网、硬件地址(MAC)

IP、广播地址、掩码

IPV6地址

MTU:1500

接收包个数

发送包个数

收发包大小

collisions:0    冲突为0

txqueuelen:1000    传送队列为1000(包数量)

直接执行ifconfig,可以查看到激活状态接口的属性,查看所有的:

ifconfig -a

设定IP地址:

ifconfig  IF_NAME  IP/NETMASK(长度数字)   [up]

ifconfig IF_NAME IP netmask NETMASK

如:ifconfig  eth0 192.168.1.100/24 或者 ifconfig eth0 192.168.1.100 netmask 255.255.255.0

注意:此种修改方法可立即生效,但临时有效,重启系统或服务丢失

禁用、启用网卡接口

ifconfig  IF_NAME  down|up

ifup  IF_NAME

ifdown IF_NAME

====================================================================

ping命令

ping命令      用ICMP的ECHO _REQUEST报文,测试主机连通性

ping [options]  DESTINATION

-c  #    count  发送ping包次数

-s  #    发送探测报文的大小

-w  #   表示ping多久,-w 5 :  ping 5秒钟后退出

[root@localhost ~]# ping -c 5 -s 128  www.baidu.com

指定ping 5次,包大小为128个字节

[root@localhost ~]# ping -w 3 -s 128  www.baidu.com

指定ping 3秒钟,包大小为128个字节

=====================================================================

route命令

查看路由:

route  -n,以数字方式显示路由表,对结果不进行解析,比直接执行route查看的要略快

添加路由:

route  add   {-host|-net}  Target[/prefix]  [gw Gw]    [[dev] IfNAME]

如:route add  -net 192.168.109.0/24 gw 192.168.101.1 dev eth2

-host 设置到某主机的路由,-net设置到某网段的路由

添加默认网关:

route add -net 0.0.0.0 gw 192.168.2.1 dev eth0   静态路由

        route add default  gw  192.168.2.1  [dev eth0]根据实际情况,接口名可省略

删除路由

    route  del   {-host|-net}  Target[/prefix]  [gw Gw]    [[dev] IfNAME]

如:  route  del -net 0.0.0.0  gw 192.168.2.1

注意:添加路由后,立即生效,但也只是临时有效,重启服务或者系统就会消失

静态路由配置文件(永久生效):

 /etc/sysconfg/network-scripts/route-IFNAME        route-IFNAME文件不存在,自建即可

配置方式一:每一行定义一个路由条目

 DESTINATION  via  GATEWAY

如:

 192.168.0.0/24 via 172.16.0.2

 192.168.1.1 via  172.16.0.3

配置方式二:

 每三行定义一个路由条目

 ADDRESS=

 NETMASK=

 GATEWAY=

  例如:

  ADDRESS=192.168.0.0

  NETMASK=255.255.255.0

  GATEWAY=172.20.0.2

注意:这两种方式不可以混合使用,只能选一种使用

========================================================================

setup命令、chkconfig命令

配置IP、掩码、网关

    命令:setup   图形界面下修改(如果语言乱码可以export LANG=en)

        此种配置方式的配置结果是保存至配置文件

        生效方法:重启服务,比较繁琐不常用

网络管理的相关服务有两个

 NetworkManager(建议停用)

 network

查看服务是否开机启动:

 chkconfig --list|grep "SERVICE_NAME"

禁止或者启用开机启动

 chkconfig  SERVICE_NAME  on|off

立即启动或关闭服务

 service SERVICE_NAME start|stop|restart

 /etc/init.d/SERVICE_NAME  start|stop|restart

reset命令  当做一些设置是界面发生奇怪变化,可以尝试初始化一下

 terminal initialization终端初始化

==============================================================================

通过修改配置文件,进行修改ip、netmask、DNS

每个网络接口都有一个配置文件

    /etc/sysconfig/network-scripts/ifcfg-IFNAME

常用参数:

    DEVICE=eth0           设备名(与ifcfg-IFNAME中的IFNAME一致)

    HWADDR=00:0C:29:21:F3:BE  MAC地址,此地址不可更改,要跟网卡的ROM中固定地址一致

    TYPE=Ethernet          接口类型

    UUID=            可以删掉,如果存在不可以修改其值

    ONBOOT=yes         开机时是否随机激活

    NM_CONTROLLED=yes    NM=networkmanager  ,是否受NetworkManager服务控制,建议选no

    BOOTPROTO=static        启动时配置协议:static(手动配置)、none(手动配置)、dhcp(动态获取)、bootp(动态获取)

    IPADDR=172.20.1.33        IP地址

    NETMASK=255.255.255.0     掩码地址

    GATEWAY=172.20.1.1        网关地址

    DNS1=192.168.1.13         主DNS

    DNS2=192.168.1.14         备用DNS

    IPV6INIT                  是否初始化IPV6协议地址            可以不存在

    USERCTL                   是否允许普通用户管理此接口        可以不存在

    PEERDNS                   当BOOTPROTO的值为dhcp时,是否允许自动获取的覆盖手动指定的

注意:不能立即生效,重启网络服务生效

配置DNS服务器指向(在网络接口的配置文件中或者在此文件中修改DNS都可以)

/etc/resolv.conf

nameserver  DNSSERVER_IP

最多可以填写3个dns服务器

dig命令,   domain information groper

正向解析:

  dig  -t FQDN

  dig -t A  www.baidu.com

  dig  -t A  www.baidu.com  @8.8.8.8   指定使用某个DNS进行解析

反向解析:

  dig  -x    IP

ip命令

ip [ OPTIONS ] OBJECT { COMMAND | help }

    OBJECT := { link | addr  | route } 

        link    链接接口,如eth0

        addr    管理接口的IP地址

        route        管理路由

    link    设定接口属性

        set     设置接口属性

                ip  link set DEVICE {up|down}

                ip  link set  DEVICE  promisc  {on|off}  是否支持混杂模式

                ip  link set DEVICE  tx queuelen PACKETS   队列长度

                ip  link set DEVICE  name NAME  修改接口名字

        show        显示接口状态

            如:ip  link show  [eth0]

   addr    接口地址管理

        add    添加地址

        del    删除地址    

   格式:ip addr {add|del} IFADDR dev STRING (添加的地址ifconfig看不到,可以ip addr show查看)

   ip addr add  192.168.100.100/24   dev eth0

   ip addr del 192.168.100.100/24  dev eth0

        show  查看地址

           ip  addr  show   [dev_name]

        flush  清空地址

            ip  addr flush  dev   DEV_NAME    清除指定网卡的所有地址

       如:ip addr flush dev eth0

  route

    list    列出路由

    ip  route  list == ip route show

    add    添加路由

    ip  route add DESINATION  via  GATEWAY  [ dev   IF_NAME]

    如:ip route add  default via 192.168.1.1  (默认网关)

       ip  route add 192.168.100.0/24 via  172.20.1.1  dev eth0

    del    删除路由

    ip route del DESINATION

    如:ip route del  192.168.100.0/24

==================================================================================

给接口配置多个IP的其他方式

    ifconfig    临时生效,立即生效

        ethX:Y        如:ifconfig eth0:1 192.168.1.100/24 [up] 

    配置文件  永久生效,不会立即生效

        /etc/sysconfig/network-scripts/ifcfg-IF_ALIAS   如ifcfg-eth0:0

            DEVICE=IF_ALIAS

            BOOTPROTO=static|none

            ONBOOT=yes

            IPADDR=XXXXXXX

            NETMASK=XXXXXXX

    ip命令如:ip addr add 192.168.100.100/24 dev  eth0:0

    也是临时生效

配置主机名:

        hostname  HOSTNAME      其结果保存在/proc/sys/kernel/hostname  echo “HOSTNAME”  > /proc/sys/kernel/hostname

        配置文件

            修改:/etc/sysconfig/network   其中NETWORKING=yes  网络总开关,关闭后主机不能联网

网络管理的几个常用工具

ping

traceroute   路由跟踪

    traceroute   www.baidu.com

mtr

    融合了ping和traceroute功能的诊断工具

        mrt  HOST

网络状态探测工具

netstat

    -r 显示路由表

    -n  numeric 数字显示,不反解IP或者主机名、端口等

    -l    listening,处于监听状态

    -t    tcp相关连接

    -u    udp相关连接

    -a    all,显示所有连接(针对于TCP而言,处于各种状态)

    -p    process ,显示相关连接的程序名和进程名

常用组合:

    -rn  -tnl  -nul  -tunl  -tan  -tanlp

ss        跟netstat很像,但效率更高

    -n    数字格式

    -l    处于监听状态

    -a    显示所有连接,针对tcp

    -e    扩展信息

    -m    内存使用信息

    -o  state  { established|fin_wait_1|fin_wait_2|listening }  状态过滤

常用组合

    -tnl  -unl  -tan  -tunl  -tnlp

iftop    以连接为中心,显示带宽占用情况

   iftop -i eth0

nethogs   按照进程为中心,显示带宽占用情况

    nethogs   [IF_NAME]

练习:

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

不在线的主机使用红色显示,在线的使用绿色显示

#!/bin/bash

for i in {1..254};do

if ping 172.16.250.$i -w 1 -c 1 &> /dev/null ;then

echo -e "\033[32m 172.16.250.$i is exist  \033[0m"

    else

echo -e "\033[31m 172.16.250.$i is not exist  \033[0m"

fi

done

echo -e "\033[30m 黑色字 \033[0m"

echo -e "\033[31m 红色字 \033[0m"

echo -e "\033[32m 绿色字 \033[0m"

echo -e "\033[33m ×××字 \033[0m"

echo -e "\033[34m 蓝色字 \033[0m"

echo -e "\033[35m 紫色字 \033[0m"

echo -e "\033[36m 天蓝字 \033[0m"

echo -e "\033[37m 白色字 \033[0m"

echo -e "\033[40;37m 黑底白字 \033[0m"

echo -e "\033[41;37m 红底白字 \033[0m"

echo -e "\033[42;37m 绿底白字 \033[0m"

echo -e "\033[43;37m 黄底白字 \033[0m"

echo -e "\033[44;37m 蓝底白字 \033[0m"

echo -e "\033[45;37m 紫底白字 \033[0m"

echo -e "\033[46;37m 天蓝底白字 \033[0m"

echo -e "\033[47;30m 白底黑字 \033[0m"

继续阅读