zoukankan      html  css  js  c++  java
  • Linux-网络基础管理

    Linux-网络基础管理

    网卡命名

    传统网卡命名机制

    • 传统命名:

      • 以太网eth[0,1,2,...]
      • wlan[0,1,2,...]

    网络接口名称组成格式

    基于固件、设备结构、设备类型
    • 由两个字母开头标示固件
      • 以太网网卡以 en 开头
      • 无线网卡以 wl 开头
    • 设备结构
      • o:主板上集成的设备的设备索引号
      • s:扩展槽的索引号
      • x:基于MAC地址的命名
      • ps:基于物理位置拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号

    回归传统命名

    问:如何把网卡名称改成eth0?

    //第一步:修改网卡配置文件
    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# ls
    ifcfg-ens160
    [root@localhost network-scripts]# mv ifcfg-ens160 ifcfg-eth0
    [root@localhost network-scripts]# vi ifcfg-eth0 
    TYPE=Ethernet
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    NAME=eth0		//此处要把ens160改成eth0
    UUID=d4d7570b-d09c-49d3-a15e-263573ad5d36
    DEVICE=eth0	        //此处要把ens160改成eth0
    ONBOOT=yes
    
    //第二步:编辑/etc/default/grub配置文件,在GRUB_CMDLINE_LINUX那行内rhgb前加net.ifnames=0 biosdevname=0
    
    [root@localhost ~]# vi /etc/default/grub 
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
    GRUB_DISABLE_RECOVERY="true"
    GRUB_ENABLE_BLSCFG=true
    
    //第三步:为grub2生成其配置文件
    [root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg 
    Generating grub configuration file ...
    done
    
    //第四步:重启系统
    [root@localhost ~]# reboot
    

    网络管理常用命令

    ifconfig(需要安装net-tools)

    [root@localhost ~]# ifconfig
    -bash: ifconfig: command not found
    [root@localhost ~]# mount /dev/cdrom /mnt/
    mount: /mnt: WARNING: device write-protected, mounted read-only.
    [root@localhost ~]# rpm -ivh /mnt/BaseOS/Packages/net-tools-2.0-0.51.20160912git.el8.x86_64.rpm 
    warning: /mnt/BaseOS/Packages/net-tools-2.0-0.51.20160912git.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:net-tools-2.0-0.51.20160912git.el################################# [100%]
    
    //查看当前处于活动状态的所有网络接口
    [root@localhost ~]# ifconfig 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.237.128  netmask 255.255.255.0  broadcast 192.168.237.255
            inet6 fe80::6132:2a03:6fc1:9bed  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:f9:ec:35  txqueuelen 1000  (Ethernet)
            RX packets 400  bytes 34410 (33.6 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 257  bytes 34769 (33.9 KiB)
            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 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    //仅查看eth0网卡状态
    [root@localhost ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.237.128  netmask 255.255.255.0  broadcast 192.168.237.255
            inet6 fe80::6132:2a03:6fc1:9bed  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:f9:ec:35  txqueuelen 1000  (Ethernet)
            RX packets 438  bytes 37382 (36.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 280  bytes 37615 (36.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    //查看所有网卡状态信息, 包括禁用和启用
    [root@localhost ~]# ifconfig -a
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.237.128  netmask 255.255.255.0  broadcast 192.168.237.255
            inet6 fe80::6132:2a03:6fc1:9bed  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:f9:ec:35  txqueuelen 1000  (Ethernet)
            RX packets 460  bytes 39120 (38.2 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 294  bytes 39379 (38.4 KiB)
            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 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    网卡配置信息含义:

    列名 含义
    UP 网卡处于活动状态
    BROADCAST 支持广播
    RUNNING 网线已接入
    MULTICAST 支持组播
    MTU 最大传输单元(字节),即此接口一次所能传输的最大封包
    inet 显示IPv4地址行
    inet6 显示IPv6地址行
    link/enther 指设备硬件(MAC)地址
    txqueuelen 传输缓存区长度大小
    RX packets 接收的数据包
    TX packets 发送的数据包
    errors 总的收包的错误数量
    dropped 由于各种原因, 导致拷贝在内存过程中被丢弃
    collisions 网络信号冲突情况, 值不为0则可能存在网络故障

    ip

    //语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT:
        link:网络接口属性
        addr:协议地址
        route:路由
    
    //查看网络接口所有地址
    [root@localhost ~]# ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        
    //显示报文统计信息
    [root@localhost ~]# ip -s link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        RX: bytes  packets  errors  dropped overrun mcast   
        0          0        0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        0          0        0       0       0       0       
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        49544      603      0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        44711      348      0       0       0       0    
        
    //启用或禁用网络接口ip link set DEV {up|down}
    [root@localhost ~]# ip link set lo up
    [root@localhost ~]# ip link set lo down
    
    //ip addr show DEV:查看网络接口的地址
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1621sec preferred_lft 1621sec
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
    
    //ip addr add ADDRESS dev DEV:添加IP地址
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1708sec preferred_lft 1708sec
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    [root@localhost ~]# ip addr add 192.168.1.1/24 dev eth0
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1674sec preferred_lft 1674sec
        inet 192.168.1.1/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    
    //ip addr del ADDRESS dev DEV:删除IP地址
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1638sec preferred_lft 1638sec
        inet 192.168.1.1/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    [root@localhost ~]# ip addr del 192.168.1.1/24 dev eth0
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1621sec preferred_lft 1621sec
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    

    route

    Linux主机之间是使用IP进行通信, 假设A主机和B主机同在一个网段内且网卡都处于激活状态, 则A具备和B直接通信的能力, 但如果A主机和B主机处于两个不同的网段, 则A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施, 每一个网段都应该至少有一个网关

    //查看当前路由表
    [root@localhost ~]# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         _gateway        0.0.0.0         UG    100    0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    
    //以数字方式显示各主机或端口等相关信息
    [root@localhost ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.237.2   0.0.0.0         UG    100    0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    
    //添加主机路由
    [root@localhost ~]# ip addr add 192.168.1.1/24 dev eth0
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 954sec preferred_lft 954sec
        inet 192.168.1.1/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    [root@localhost ~]# route -n 
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.237.2   0.0.0.0         UG    100    0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    [root@localhost ~]# route add -host 192.168.1.1 gw 192.168.1.254
    [root@localhost ~]# route -n 
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.237.2   0.0.0.0         UG    100    0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    192.168.1.1     192.168.1.254   255.255.255.255 UGH   0      0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    
    //删除路由
    [root@localhost ~]# route del 192.168.1.1
    [root@localhost ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.237.2   0.0.0.0         UG    100    0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    

    hostname与hostnamectl

    生产环境中必须配置主机名,同时主机名也需要遵循一定的规范

    公有云: 地区-项目-业务-服务-节点-地址
    wh-shop-register-nginx-node1-192.168.56.13
    wh-med-pay-mysql-master01-192.168.56.11
    wh-med-pay-mysql-slave01-192.168.56.12
    
    
    //hostname查看主机名
    [root@localhost ~]# hostname
    localhost.localdomain
    
    //hostname临时修改主机名
    [root@localhost ~]# hostname yuqinghao
    [root@localhost ~]# cat /etc/hostname
    localhost.localdomain
    //注意:修改主机名后需要重新登录用户才会显示效果
    
    
    //rhel7系统建议使用hostnamectl修改和查看主机名
    //设定永久名称
    [root@localhost ~]# hostnamectl set-hostname yuqinghao
    [root@localhost ~]# cat /etc/hostname
    yuqinghao
    
    //查看主机信息
    [root@localhost ~]# hostnamectl 
       Static hostname: yuqinghao
             Icon name: computer-vm
               Chassis: vm
            Machine ID: 298d293aae1e4da99fe4573bb610ebb0
               Boot ID: cc0222a1fbd843a3a4bc71b9e7f82e1a
        Virtualization: vmware
      Operating System: Red Hat Enterprise Linux 8.2 (Ootpa)
           CPE OS Name: cpe:/o:redhat:enterprise_linux:8.2:GA
                Kernel: Linux 4.18.0-193.el8.x86_64
          Architecture: x86-64
    
    注意:在Linux中以命令方式修改网络配置只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。

    网络相关配置文件

    网络接口配置文件

    网络接口即网卡,其配置文件的路径是/etc/sysconfig/network-scripts/ifcfg-网卡名字

    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=192.168.237.128
    NETMASK=255.255.255.0
    GATEWAY=192.168.237.2
    DNS1=114.114.114.114
    
    网卡配置说明:
    参数 说明
    BOOTPROTO=none 引导协议,可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以
    NM_CONTROLLED NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本。可选值有{ yes | no }。此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”
    TYPE 接口类型。常见的接口类型有:Ethernet,Bridge
    UUID 设备的惟一标识
    HWADDR 硬件地址,要与硬件中的地址保持一致,可以省略
    IPADDR=192.168.237.128 固定IP地址
    PREFIX=24 子网掩码
    NETMASK=255.255.255.0 子网掩码
    GATEWAY=192.168.237.254 默认网关
    DNS1=114.114.114.114 第一个DNS服务器指向
    DNS2 第二个DNS服务器指向
    DNS3 第三个DNS服务器指向
    DEVICE=eth0 关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
    NAME="eth0" 连接名称
    ONBOOT=yes 在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
    DEFROUTE=yes 将接口设定为默认路由{ yes | no }
    USERCTL={yes|no} 是否允许普通用户控制此接口的启用与禁用
    PEERDNS={yes|no} 是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中

    小扩展:如何添加多个IP地址、DNS、网关,并且重启后还存在呢?

    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
    DEVICE=eth0
    ONBOOT=yes
    IPADDR0=192.168.237.128
    NETMASK0=255.255.255.0
    GATEWAY=192.168.237.2
    DNS1=114.114.114.114
    DNS2=8.8.8.8
    IPADDR1=192.168.237.129
    NETMASK1=255.255.255.0
    [root@localhost ~]# systemctl restart NetworkManager
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global dynamic noprefixroute eth0
           valid_lft 1777sec preferred_lft 1777sec
        inet 192.168.1.1/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::6132:2a03:6fc1:9bed/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
           
    //此时重启网卡后没有刷新出来需要禁用再启用网卡
    [root@localhost ~]# ifdown eth0;ifup eth0
    Connection 'eth0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.237.129/24 brd 192.168.237.255 scope global secondary noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fef9:ec35/64 scope link 
           valid_lft forever preferred_lft forever
    [root@localhost ~]# reboot
    [root@localhost ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.237.129/24 brd 192.168.237.255 scope global secondary noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fef9:ec35/64 scope link 
           valid_lft forever preferred_lft forever
    

    小扩展:如何在新添加一块网卡,并且修改它的IP地址为192.168.10.1?

    //第一步:关机新添加网络适配器
    [root@localhost ~]# shutdown -h now
    //开机后,发现新加了一个eth1
    [root@localhost ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:35 brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.128/24 brd 192.168.237.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.237.129/24 brd 192.168.237.255 scope global secondary noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fef9:ec35/64 scope link 
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:3f brd ff:ff:ff:ff:ff:ff
        inet 192.168.237.130/24 brd 192.168.237.255 scope global dynamic noprefixroute eth1
           valid_lft 1601sec preferred_lft 1601sec
        inet6 fe80::c8bc:9bc7:cedd:aa2a/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    //准备修改IP地址的时候却发现没有配置文件
    [root@localhost ~]# ls /etc/sysconfig/network-scripts/
    ifcfg-eth0
    
    //第二步:创建配置文件
    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth1
    DEVICE=eth1
    ONBOOT=yes
    IPADDR=192.168.10.1
    PREFIX=24
    
    //第三步:重启网卡
    [root@localhost ~]# systemctl restart NetworkManager
    [root@localhost ~]# ifdown eth1;ifup eth1
    Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
    //成功
    [root@localhost ~]# ip addr show eth1
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:0c:29:f9:ec:3f brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.1/24 brd 192.168.10.255 scope global noprefixroute eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fef9:ec3f/64 scope link 
           valid_lft forever preferred_lft forever
    

    DNS配置文件

    DNS配置文件的路径是/etc/resolv.conf

    [root@localhost ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    search localdomain
    nameserver 192.168.237.2
    nameserver 114.114.114.114
    nameserver 8.8.8.8
    
    注意:网卡配置文件的DNS会覆盖它,尽量不要直接在这个文件里修改DNS

    路由配置文件

    路由配置文件的路径是/etc/sysconfig/network-scripts/route-网卡名字

    //添加路由
    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]# ls
    ifcfg-eth0  ifcfg-eth1
    
    //添加格式一:
    [root@localhost network-scripts]# vi route-eth1
    192.168.10.0/24 via 192.168.10.254
    192.168.20.0/24 via 192.168.20.254
    
    //添加格式二:
    [root@localhost network-scripts]# vi route-eth1
    ADDRESS0=192.168.10.0
    NETMASK0=255.255.255.0
    GATEWAY0=192.168.10.2
    ADDRESS0=192.168.20.0
    NETMASK0=255.255.255.0
    GATEWAY0=192.168.20.2
    
    
    [root@localhost network-scripts]# systemctl restart NetworkManager
    [root@localhost network-scripts]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    0.0.0.0         255.255.255.0   U     101    0        0 eth1
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    [root@localhost network-scripts]# ifdown eth1;ifup eth1
    Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
    [root@localhost network-scripts]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    0.0.0.0         255.255.255.0   U     101    0        0 eth1
    192.168.20.0    192.168.20.254  255.255.255.0   UG    101    0        0 eth1
    192.168.20.254  0.0.0.0         255.255.255.255 UH    101    0        0 eth1
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    
    //删除路由
    [root@localhost network-scripts]# rm -f route-eth1 
    [root@localhost network-scripts]# ifdown eth1;ifup eth1
    Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
    [root@localhost network-scripts]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    0.0.0.0         255.255.255.0   U     101    0        0 eth1
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    192.168.237.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
    

    NetworkManager管理网络

    RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
    NetworkManager提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui, nm-connection-editor

    device物理设备, 例如 ens33,enp2s0,virbr0,team0
    connection连接设置, 具体网络配置方案

    • 不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
    • 针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了

    使用nmcli命令查看设备以及连接情况

    //查看设备状态
    [root@localhost ~]# nmcli device
    DEVICE  TYPE      STATE      CONNECTION 
    eth0    ethernet  connected  eth0       
    eth1    ethernet  connected  eth1       
    lo      loopback  unmanaged  --   
    
    //查看指定设备的详细状态
    [root@localhost ~]# nmcli device show eth0
    GENERAL.DEVICE:                         eth0
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         00:0C:29:F9:EC:35
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     eth0
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
    WIRED-PROPERTIES.CARRIER:               on
    IP4.ADDRESS[1]:                         192.168.237.128/24
    IP4.ADDRESS[2]:                         192.168.237.129/24
    IP4.GATEWAY:                            --
    IP4.ROUTE[1]:                           dst = 192.168.237.0/24, nh = 0.0.0.0, mt = 100
    IP4.ROUTE[2]:                           dst = 192.168.237.0/24, nh = 0.0.0.0, mt = 100
    IP4.DNS[1]:                             114.114.114.114
    IP4.DNS[2]:                             8.8.8.8
    IP6.ADDRESS[1]:                         fe80::20c:29ff:fef9:ec35/64
    IP6.GATEWAY:                            --
    IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256
    IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255
    
    //查看连接状态
    [root@localhost ~]# nmcli connection
    NAME                UUID                                  TYPE      DEVICE 
    eth0                03be31f5-a3c1-4f8d-88b3-aea6e85c869f  ethernet  eth0   
    eth1                9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04  ethernet  eth1   
    Wired connection 1  7da8e5ae-c71c-3b8f-b8e2-3cee25b95067  ethernet  --    
    
    //查看所有活动的连接
    [root@localhost ~]# nmcli connection show eth0
    connection.id:                          eth0
    connection.uuid:                        03be31f5-a3c1-4f8d-88b3-aea6e85c869f
    connection.stable-id:                   --
    connection.type:                        802-3-ethernet
    connection.interface-name:              eth0
    connection.autoconnect:                 yes
    connection.autoconnect-priority:        0
    connection.autoconnect-retries:         -1 (default)
    connection.multi-connect:               0 (default)
    connection.auth-retries:                -1
    connection.timestamp:                   1606555164
    connection.read-only:                   no
    connection.permissions:                 --
    connection.zone:                        --
    connection.master:                      --
    connection.slave-type:                  --
    connection.autoconnect-slaves:          -1 (default)
    connection.secondaries:                 --
    connection.gateway-ping-timeout:        0
    connection.metered:                     unknown
    connection.lldp:                        default
    connection.mdns:                        -1 (default)
    connection.llmnr:                       -1 (default)
    connection.wait-device-timeout:         -1
    802-3-ethernet.port:                    --
    802-3-ethernet.speed:                   0
    802-3-ethernet.duplex:                  --
    802-3-ethernet.auto-negotiate:          no
    802-3-ethernet.mac-address:             --
    802-3-ethernet.cloned-mac-address:      --
    802-3-ethernet.generate-mac-address-mask:--
    802-3-ethernet.mac-address-blacklist:   --
    802-3-ethernet.mtu:                     auto
    802-3-ethernet.s390-subchannels:        --
    802-3-ethernet.s390-nettype:            --
    802-3-ethernet.s390-options:            --
    802-3-ethernet.wake-on-lan:             default
    802-3-ethernet.wake-on-lan-password:    --
    ipv4.method:                            manual
    ipv4.dns:                               114.114.114.114,8.8.8.8
    ipv4.dns-search:                        --
    ipv4.dns-options:                       --
    ipv4.dns-priority:                      0
    ipv4.addresses:                         192.168.237.128/24, 192.168.237.129/24
    ipv4.gateway:                           --
    ipv4.routes:                            --
    

    nmtui //字符界面图形模式配置

    //第一步:输入命令nmtui

    [root@localhost ~]# nmtui
    

    进入配置界面,选择Edit a connection

    image-1

    Edit a connection:设置一个连接,可以添加删除网络配置

    Activate a connection:激活一个连接,可以启用禁用网络配置

    Set system hostname:设置hostname

    //第二步:选择网络接口

    image-2

    //第三步:进行网络配置

    image-3
    //第四步:OK保存 最后Quit退出 重启网卡就成功了

    image-4

    网络检测工具与故障排查

    ping

    ping命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况

    //ping命令常用选项:
        -c 指定ping的次数
        -i 指定ping包的发送间隔
        -w 如果ping没有回应, 则在指定超时时间后退出
        
    [root@localhost ~]# ping www.baidu.com
    PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
    64 bytes from localhost (182.61.200.7): icmp_seq=1 ttl=128 time=22.1 ms
    64 bytes from localhost (182.61.200.7): icmp_seq=2 ttl=128 time=22.7 ms
    64 bytes from localhost (182.61.200.7): icmp_seq=3 ttl=128 time=22.2 ms
    ^C
    --- www.a.shifen.com ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 7ms
    rtt min/avg/max/mdev = 22.143/22.321/22.651/0.263 ms
    

    host与nslookup

    host/nslookup命令用于查询DNS记录(需要安装bind-utils)

    安装步骤:

    //配置yum源
    [root@localhost ~]# mount /dev/cdrom /mnt/
    [root@localhost ~]# vi /etc/yum.repos.d/xx.repo 
    [BaseOS]
    name=BaseOS
    baseurl=file:///mnt/BaseOS
    gpgpcheck=0
    enabled=1
    
    [AppStream]
    name=AppStream
    baseurl=file:///mnt/AppStream
    gpgpcheck=0
    enabled=1
    
    [root@localhost ~]# yum clean all
    Updating Subscription Management repositories.
    Unable to read consumer identity
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    0 files removed
    [root@localhost yum.repos.d]# yum -y install bind-utils
    Updating Subscription Management repositories.
    Unable to read consumer identity
    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
    BaseOS                                                        86 MB/s | 2.3 MB     00:00    
    AppStream                                                    129 MB/s | 5.8 MB     00:00    
    Dependencies resolved.
    =============================================================================================
     Package                 Architecture    Version                    Repository          Size
    =============================================================================================
    Installing:
     bind-utils              x86_64          32:9.11.13-3.el8           AppStream          443 k
    Installing dependencies:
     bind-libs               x86_64          32:9.11.13-3.el8           AppStream          171 k
     bind-libs-lite          x86_64          32:9.11.13-3.el8           AppStream          1.2 M
     bind-license            noarch          32:9.11.13-3.el8           AppStream          100 k
     python3-bind            noarch          32:9.11.13-3.el8           AppStream          147 k
    
    Transaction Summary
    =============================================================================================
    Install  5 Packages
    
    Total size: 2.0 M
    Installed size: 4.7 M
    Downloading Packages:
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                                     1/1 
      Installing       : bind-license-32:9.11.13-3.el8.noarch                                1/5 
      Installing       : bind-libs-lite-32:9.11.13-3.el8.x86_64                              2/5 
      Installing       : bind-libs-32:9.11.13-3.el8.x86_64                                   3/5 
      Installing       : python3-bind-32:9.11.13-3.el8.noarch                                4/5 
      Installing       : bind-utils-32:9.11.13-3.el8.x86_64                                  5/5 
      Running scriptlet: bind-utils-32:9.11.13-3.el8.x86_64                                  5/5 
      Verifying        : bind-libs-32:9.11.13-3.el8.x86_64                                   1/5 
      Verifying        : bind-libs-lite-32:9.11.13-3.el8.x86_64                              2/5 
      Verifying        : bind-license-32:9.11.13-3.el8.noarch                                3/5 
      Verifying        : bind-utils-32:9.11.13-3.el8.x86_64                                  4/5 
      Verifying        : python3-bind-32:9.11.13-3.el8.noarch                                5/5 
    Installed products updated.
    
    Installed:
      bind-libs-32:9.11.13-3.el8.x86_64            bind-libs-lite-32:9.11.13-3.el8.x86_64        
      bind-license-32:9.11.13-3.el8.noarch         bind-utils-32:9.11.13-3.el8.x86_64            
      python3-bind-32:9.11.13-3.el8.noarch        
    
    Complete!
    [root@localhost ~]# which host
    /usr/bin/host
    

    host

    [root@localhost ~]# host www.baidu.com
    www.baidu.com is an alias for www.a.shifen.com.
    www.a.shifen.com has address 182.61.200.6
    www.a.shifen.com has address 182.61.200.7
    

    nslookup

    [root@localhost ~]# host www.baidu.com
    www.baidu.com is an alias for www.a.shifen.com.
    www.a.shifen.com has address 182.61.200.6
    www.a.shifen.com has address 182.61.200.7
    [root@localhost ~]# nslookup www.baidu.com
    Server:		114.114.114.114
    Address:	114.114.114.114#53
    
    Non-authoritative answer:
    www.baidu.com	canonical name = www.a.shifen.com.
    Name:	www.a.shifen.com
    Address: 182.61.200.7
    Name:	www.a.shifen.com
    Address: 182.61.200.6
    

    netstat //用于查看网络状态

    //显示路由表
    [root@localhost ~]# netstat -r
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    default         _gateway        0.0.0.0         UG        0 0          0 eth0
    192.168.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
    192.168.237.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
    
    //以数字方式显示路由表
    [root@localhost ~]# netstat -rn
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         192.168.237.2   0.0.0.0         UG        0 0          0 eth0
    192.168.10.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
    192.168.237.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
    
    //显示建立的tcp连接
    [root@localhost ~]# netstat -t
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0     36 localhost.localdoma:ssh 192.168.237.1:55936     ESTABLISHED
    tcp        0    416 localhost.localdoma:ssh 192.168.237.1:55504     ESTABLISHED
    
    //显示udp连接
    [root@localhost ~]# netstat -u
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State  
    
    //显示监听状态的连接
    [root@localhost ~]# netstat -l
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
    tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
    Active UNIX domain sockets (only servers)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  2      [ ACC ]     SEQPACKET  LISTENING     22751    /run/udev/control
    unix  2      [ ACC ]     SEQPACKET  LISTENING     22797    /run/systemd/coredump
    unix  2      [ ACC ]     STREAM     LISTENING     22845    /run/lvm/lvmpolld.socket
    unix  2      [ ACC ]     STREAM     LISTENING     30055    /run/user/0/systemd/private
    unix  2      [ ACC ]     STREAM     LISTENING     30064    /run/user/0/bus
    unix  2      [ ACC ]     STREAM     LISTENING     27018    /var/run/vmware/guestServicePipe
    unix  2      [ ACC ]     STREAM     LISTENING     26173    /var/lib/sss/pipes/private/sbus-monitor
    unix  2      [ ACC ]     STREAM     LISTENING     26210    /var/lib/sss/pipes/private/sbus-dp_implicit_files.995
    unix  2      [ ACC ]     STREAM     LISTENING     25268    /run/dbus/system_bus_socket
    unix  2      [ ACC ]     STREAM     LISTENING     25271    /var/run/.heim_org.h5l.kcm-socket
    unix  2      [ ACC ]     STREAM     LISTENING     26301    /var/lib/sss/pipes/nss
    unix  2      [ ACC ]     STREAM     LISTENING     22506    /run/systemd/private
    unix  2      [ ACC ]     STREAM     LISTENING     12783    /run/systemd/journal/stdout
    Active Bluetooth connections (only servers)
    Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
    Proto  Destination       Source            State     Channel
    
    //显示监听指定的套接字的进程的进程号及进程名
    [root@localhost ~]# netstat -p
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0     36 localhost.localdoma:ssh 192.168.237.1:55936     ESTABLISHED 2525/sshd: root [pr 
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
    unix  10     [ ]         DGRAM                    12800    1/systemd            /run/systemd/journal/dev-log
    unix  2      [ ]         DGRAM                    30051    1577/systemd         /run/user/0/systemd/notify
    ......
    unix  2      [ ]         DGRAM                    47019    2678/NetworkManager  
    unix  3      [ ]         STREAM     CONNECTED     47013    2678/NetworkManager  
    Active Bluetooth connections (w/o servers)
    Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
    Proto  Destination       Source            State     Channel
    
    //显示所有状态的连接
    [root@localhost ~]# netstat -a
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
    tcp        0     36 localhost.localdoma:ssh 192.168.237.1:55936     ESTABLISHED
    tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  10     [ ]         DGRAM                    12800    /run/systemd/journal/dev-log
    unix  2      [ ACC ]     SEQPACKET  LISTENING     22751    /run/udev/control
    ......
    unix  2      [ ]         DGRAM                    47019    
    unix  3      [ ]         STREAM     CONNECTED     47013    
    Active Bluetooth connections (servers and established)
    Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
    Proto  Destination       Source            State     Channel
    
    //常用选项
        -antlp
    [root@localhost ~]# netstat -antlp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1042/sshd           
    tcp        0     36 192.168.237.128:22      192.168.237.1:55936     ESTABLISHED 2525/sshd: root [pr 
    tcp6       0      0 :::22                   :::*                    LISTEN      1042/sshd       
    

    ss //网络状态查看工具,取代netstat

    //常用的options:
        -t:tcp协议相关
        -u:udp协议相关
        -w:裸套接字相关
        -x:unix套接字相关
        -l:listen状态的连接
        -a:所有
        -n:数字格式
        -p:相关的程序及pid
        -e:扩展的信息
        -m:内存用量
        -o:显示计时器信息
    
    //常用组合:
    [root@localhost ~]# ss -ant
    State      Recv-Q      Send-Q             Local Address:Port            Peer Address:Port      
    LISTEN     0           128                      0.0.0.0:22                   0.0.0.0:*         
    ESTAB      0           36               192.168.237.128:22             192.168.237.1:55936     
    LISTEN     0           128                         [::]:22                      [::]:*   
    
    [root@localhost ~]# ss -tanl
    State       Recv-Q      Send-Q           Local Address:Port             Peer Address:Port      
    LISTEN      0           128                    0.0.0.0:22                    0.0.0.0:*         
    LISTEN      0           128                       [::]:22                       [::]:*  
    
    [root@localhost ~]# ss -antlp
    State  Recv-Q  Send-Q   Local Address:Port   Peer Address:Port                                 
    LISTEN 0       128            0.0.0.0:22          0.0.0.0:*     users:(("sshd",pid=1042,fd=5)) 
    LISTEN 0       128               [::]:22             [::]:*     users:(("sshd",pid=1042,fd=7))
    
    [root@localhost ~]# ss -aut
    Netid    State     Recv-Q    Send-Q          Local Address:Port          Peer Address:Port     
    tcp      LISTEN    0         128                   0.0.0.0:ssh                0.0.0.0:*        
    tcp      ESTAB     0         36            192.168.237.128:ssh          192.168.237.1:55936    
    tcp      LISTEN    0         128                      [::]:ssh                   [::]:*     
    
    //常见的FILTER:(可小写不能简写)
    [root@localhost ~]# ss -ant state ESTABLISHED
    Recv-Q       Send-Q                 Local Address:Port                Peer Address:Port        
    0            36                   192.168.237.128:22                 192.168.237.1:55936       
    [root@localhost ~]# ss -ant state LISTENING
    Recv-Q        Send-Q               Local Address:Port                 Peer Address:Port        
    0             128                        0.0.0.0:22                        0.0.0.0:*           
    0             128                           [::]:22                           [::]:*   
    

    常见端口:

    常用服务 默认端口号
    http 80/tcp
    https 443/tcp
    ssh 22/tcp
    ftp 20,21/tcp
    mysql 3306/tcp
    rsync 873/rsync
    redis 6379/tcp
  • 相关阅读:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx()V
    Python 数组比较
    远程桌面CredSSP 加密数据库修正
    (转)解决ssh登录慢的问题(一定要在远端主机上修改啊)
    让linux开机自动执行一条需要管理员的密码的命令
    ssh批量登录并执行命令(python实现)
    批量重命名文件——python实现
    配置python的eclipse开发环境
    Linux常用压缩解压命令
    强大的zsh配置文件
  • 原文地址:https://www.cnblogs.com/yuqinghao/p/14056164.html
Copyright © 2011-2022 走看看