• Linux--NiaoGe-Service-05


    1.设置网络参数的命令

    命令名称 作用
    ifconfig 查询、设置网卡与IP网络等相关参数
    ifup、ifdown 启动、关闭网络接口
    route 查看配置路由表(route table)
    ip 整合式的命令,可以直接修改上述提到的功能

    ifconfig、ifup、ifdown

    [root@www ~]# ifconfig {interface} {up|down} //查看与启动接口
    [root@www ~]# ifconfig interface {options} //设置与修改接口
    常用选项及参数说明:
    interface:网络接口名称,包括eth0,eth1,ppp0等。
    options:可以使用的参数。包括:
                      up,down:启动、关闭该接口(不涉及任何参数)
                      mtu:可以设置不同的MTU数值。
                      netmask:子网掩码
                      broadcast:广播地址
    [root@www ~]# ifconfig 
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:6E:1B  
              inet addr:192.168.30.12  Bcast:192.168.30.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe6b:6e1b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:2294 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1361 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:658316 (642.8 KiB)  TX bytes:171767 (167.7 KiB) 
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:6 errors:0 dropped:0 overruns:0 frame:0
              TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:304 (304.0 b)  TX bytes:304 (304.0 b)
    各项数据解释:
    eth0:网卡的名称代号,(lo也是);
    HWaddr:网卡硬件地址,俗称MAC地址;
    inet addr:IPv4的IP地址,后续的Bcast、Mask分别代表的是Broadcast与Netmask;
    inet6 addr:IPv6的IP地址;
    MTU:网络接口的最大传输单元;
    RX:代表网络由启动到目前为止的数据包接收情况,packets代表数据包数量,errors代表数据包发生错误的数量,dropped代表数据包由于有问题而被丢弃的数量;
    TX:与RX相反,为网络有启动到目前为止的数据包发送情况;
    collisions:代表数据包冲突的情况,如果发生冲突太多次,表示主机当前网络状况不太好;
    txqueuelen:代表用来传输数据的缓冲区的存储长度;
    RX bytes、TX bytes:接收、发送的字节总量。

    设置临时IP、更改MTU

    [root@www ~]# ifconfig eth0 192.168.30.120 
    > netmask 255.255.255.0 mtu 8000
    [root@www ~]# ifconfig 
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:6E:1B  
              inet addr:192.168.30.120  Bcast:192.168.30.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe6b:6e1b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:8000  Metric:1
              RX packets:2750 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1682 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:705030 (688.5 KiB)  TX bytes:210773 (205.8 KiB)
    至于ifup、ifdown命令,直接
    [root@www ~]# ifup eth0
    [root@www ~]# ifdown eth0
    即可。

    修改路由route

    [root@www ~]# route [-nee]
    [root@www ~]# route add [-net | -host] [网络或主机] netmask [mask] [gw | dev]
    [root@www ~]# route del [-net | -host] [网络或主机] netmask [mask] [gw | dev] 
    常用参数:
    -n:不是用通信协议,直接使用IP地址或者端口号;
    -ee:显示更详细的信息
    增加(add)删除(del)路由的相关参数
    -net:后接的路由为一个网络;
    -host:后接的为链接到单台主机的路由;
    netmask:与网络有关,可以设置netmask决定网络的大小
    gw:gateway的简写,后接IP的数值,与dev不同
    dev:如果只是要指定由哪一块网卡连接出去,则使用这个设置,后接eth0等。
    [root@www ~]# route -n //单纯查看路由状态
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.30.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    0.0.0.0         192.168.30.2    0.0.0.0         UG    0      0        0 eth0
    [root@www ~]# route 
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.30.0    *               255.255.255.0   U     0      0        0 eth0
    link-local      *               255.255.0.0     U     1002   0        0 eth0
    default         192.168.30.2    0.0.0.0         UG    0      0        0 eth0
    各项数据说明:
    Destrination,Genmask:这两个参数就分别是network与netmsk,他们两个组合成了一个完整的网络。
    Gateway:该网络是铜驼哪个Gateway链接出去的?如果显示0.0.0.0表示该路由是直接由本机传送,也就是可以通过局域网的MAC直接发送;如果显示的是具体IP的话,表示该路由需要经过路由器(网关)的帮忙才能呢个发送出去。
    Flags:总共有多个标志,代表含义如下:
    U(route is up) :该路由是启动的。
    H(target is a host):目标是一台主机(IP)而非网络。
    G(use gateway):需要通过外部主机来传递数据包。
    R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息的标志。
    D(dynamically installed by daemon or redirect):动态路由。
    M(modified from routing daemon or redirect):路由已经被修改了。
    !(rejecr route):这个路由将不会被接受(用来阻止不安全的网络)
    Iface:这个路由传送的数据包的接口。
    此外,在查看的路由信息中,看排序,是由C类地址到B类地址,最后则是默认路由(0.0.0.0/0.0.0.0

    路由的增加、删除

    [root@www ~]# route del -net 192.168.130.12 netmask 255.255.255.0 dev eth0
    注意:删除路由时,必须将路由表上出现的信息都写入,包括netmask、dev等
    [root@www ~]# route add -net 192.168.20.120 netmask 255.255.255.0 dev eth0
    注意:增加的路由必须要与主机的当前网络可一通信
    [root@www ~]# route add default gw 192.168.30.250 
    注意:增加默认路由的方法,只要有一个默认路由的IP即可,同样要求增加的路由必须可以与主机当前的LAN可以通信。
    所有操作完毕后,重启网络服务即可生效!

    网络参数综合命令:ip

    [root@www ~]# ip [option] [动作] [命令]
    选项与参数:
    option:设置的参数,主要有:
    -s:显示出设备的统计数据(statistics),如接收的数据包总数等;
    操作:即针对哪些网络参数进行操作,包括:
    link : 与设备(device)相关的设置,包括MTU、MAC之地等;
    addr/address:关于额外的IP协议,如多IP的实现等;
    route:与路由有关的相关设置
    关于接口设备(device)的相关设置:ip link
    [root@www ~]# ip [-s] link show //单纯的查看该设备的县官信息
    [root@www ~]# ip link set [device] [动作参数]
    选项与参数:
        show:进现实出这个设备的相关属性,如果加上-s会显示更多统计数据。
        set:可以开始设置项目,device值得是eth0,eth1等设备名称。
    动作参数:
        up | down : 启动或关闭摸个解扩,其他参数使用默认的以太网
        address::如果这个设备可以更改MAC的话,用这个参数修改
        name:给予这个设备一个特殊的名字
        mtu:最大传输单元

    显示本机所有接口信息

    [root@www ~]# ip link show 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8000 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:6b:6e:1b brd ff:ff:ff:ff:ff:ff
    [root@www ~]# ip -s link show eth0 
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8000 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:6b:6e:1b brd ff:ff:ff:ff:ff:ff
        RX: bytes  packets  errors  dropped overrun mcast   
        806108     3769     0       0       0       0       
        TX: bytes  packets  errors  dropped carrier collsns 
        307168     2507     0       0       0       0 

    启动、关闭eth0

    [root@www ~]# ip link set eth0 up/down
    [root@www ~]# ip link set eth0 mtu 1000 //设置MTU

    修改网卡信息

    [root@www ~]# ip link set eth0 name xueji
    RTNETLINK answers: Device or resource busy
    #上述提示很明确,所以修改之前先关闭eth0,然后在修改
    [root@www ~]# ip link set eth0 down
    [root@www ~]# ip link set eth0 name xueji
    [root@www ~]# ip link show
    [root@www ~]# ip link set eth0 address aa:bb:cc:dd:ee:ff //修改的MAC地址信息

    关于额外的IP的相关设定

    [root@www ~]# ip address show
    [root@www ~]# ip address [add | del] [IP参数] [dev 设备名称] [相关参数]
    选项与参数:
        show:仅显示解扩的IP信息
        add | del :进行相关参数的增加(add)或删除(del)设置,主要有:
            IP参数:主要就是网络的设置
            dev:这个IP参数所要设置的接口,如eth0,eth1等
            相关参数主要有下面这些:
                broadcast:设置广播地址,如果设置值是+表示“让系统自动计算”
                label:也就是这个设备的别名,如eth0,eth1等
                scope:这个选项的参数通常是如下内容:
                    global:允许来自所有来源的连接
                    site:仅支持IPv6,仅允许本主机的连接
                    link:仅允许本设备自我连接
                    host:仅允许本主机内部的连接
                    所以当然使用global了,默认也是global
    实例1 显示出所有接口IP参数:
    [root@www ~]# ip address show
    实例2 添加一个接口,名称设为eth0:xueji
    [root@www ~]# ip address add 192.168.30.120/24 broadcast + dev eth0 label eth0:xueji
    [root@www ~]# ifconfig 
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:6B:6E:1B  
              inet addr:192.168.30.12  Bcast:192.168.30.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe6b:6e1b/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:8000  Metric:1
              RX packets:4467 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3000 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:875397 (854.8 KiB)  TX bytes:362108 (353.6 KiB)
    
    eth0:xueji Link encap:Ethernet  HWaddr 00:0C:29:6B:6E:1B  
              inet addr:192.168.30.120  Bcast:192.168.30.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:8000  Metric:1
    .........
    实例3 删除刚刚添加的eth0:xueji接口
    [root@www ~]# ip address del 192.168.30.120/24 dev eth0

    关于路由的设置

    [root@www ~]# ip route show //单纯显示路由设置
    192.168.30.0/24 dev eth0  proto kernel  scope link  src 192.168.30.12 
    169.254.0.0/16 dev eth0  scope link  metric 1002 
    default via 192.168.30.2 dev eth0 
    [root@www ~]# ip route [add | del] [IP 或网络号] [via gateway] [dev 设备]
    选项参数:
    show:单纯显示出路由表,也可以使用list
    add | del :添加(add)或删除(del)路由
        IP或网络:可使用192.168.30.0/24之类的网络号或者单纯的IP地址
        via:从那个gateway出去,不一定需要
        dev:由哪个设备连出去,必须
        mtu:可以额外的设置MTU的数值
    实例1 显示当前的路由信息
    [root@www ~]# ip route show
    192.168.30.0/24 dev eth0  proto kernel  scope link  src 192.168.30.12 
    169.254.0.0/16 dev eth0  scope link  metric 1002 
    default via 192.168.30.2 dev eth0 
    说明:
    proto:此路由的路由协议,主要有Redirect、Kernel、Boot、Static、Ra等,其中Kernel值的是直接由内核判断自动设置
    scope:路由的范围,主要是link,也就是与本设备有关的直接连接

    接下来查看路由的添加与删除

    实例2 添加路由主要是本机直接可沟通的网络
    [root@www ~]# ip route add 192.168.130.0/24 dev eth0
    [root@www ~]# ip route show 
    192.168.130.0/24 dev eth0  scope link 
    192.168.30.0/24 dev eth0  proto kernel  scope link  src 192.168.30.12 
    169.254.0.0/16 dev eth0  scope link  metric 1002 
    default via 192.168.30.2 dev eth0
    实例3 添加可以通往外部的路由,需要通过router
    [root@www ~]# ip route add 192.168.31.0/24 via 192.168.30.12 dev eth0
    [root@www ~]# ip route show
    192.168.130.0/24 dev eth0  scope link 
    192.168.31.0/24 via 192.168.30.12 dev eth0 
    192.168.30.0/24 dev eth0  proto kernel  scope link  src 192.168.30.12 
    169.254.0.0/16 dev eth0  scope link  metric 1002 
    default via 192.168.30.2 dev eth0 
    实例4 添加默认的路由
    [root@www ~]# ip route add default via 192.168.20.12 dev eth0
    (这里是不通的,因为我系统环境限制,方法是正确的)
    实例5 删除上述添加的路由
    [root@www ~]# ip route del 192.168.31.0/24
    [root@www ~]# ip route del 192.168.130.0/24

    网络排错及相关命令

    [root@www ~]# ping  [选项参数] IP
    选项与参数:
    -c 数值:执行ping的次数
    -n:在输出数据时不进行IP与主机名的反查,直接使用IP输出(速度较快)
    -s 数值:发送出去的ICMP数据包大小,默认为56bytes,不可以放大此数值
    -t 数值:TTL的数值,默认是255,没经过一个节点就会少1
    -w  数值:等待响应对方主机的秒数
    -M[do | dont]:主要在检测网络的MTU数值大小,两个常见的选项是:
            do:代表传送一个DF(Don't Fragment)标志,让数据包不能呢个重新拆包与打包
            dont:代表不要传送DF标志,表示数据包可以在其他主机上拆包与打包
    实例1 检测DNS主机223.5.5.5是否存活
    [root@www ~]# ping -c 3 223.5.5.5
    PING 223.5.5.5 (223.5.5.5) 56(84) bytes of data.
    64 bytes from 223.5.5.5: icmp_seq=1 ttl=128 time=11.6 ms
    64 bytes from 223.5.5.5: icmp_seq=2 ttl=128 time=11.6 ms
    64 bytes from 223.5.5.5: icmp_seq=3 ttl=128 time=11.1 ms
    --- 223.5.5.5 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2015ms
    rtt min/avg/max/mdev = 11.117/11.479/11.664/0.255 ms
    上述数据含义说明:
    64bytes:表示这次发送的ICMP数据包大小为64bytes,这是默认值,在某些特殊场合中,如要搜索整个网络内最大的MTU时,可以使用-s 2000之类的数值来取代。
    icmp_seq=1:ICMP检测的次数,第一次编号为1.
    ttl=243:TTL与IP数据包内的TTL是相同的,没经过一个带有MAC的节点(node)时,如router、bridge时,TTL就会减少1,默认的TTL为255,你可以通过一个-t 150之类的方法来重新设置TTL数值。
    time=11.6ms:响应时间,单位有ms(0.001s)及us(0.000001s),一般来说,越小的响应时间,表示两部主机之间的网络连接越良好。

    例题 编写脚本实现检测整个网络的主机是否有响应,每台主机进等待1s,也仅检测一次

    [root@www ~]# cd bin/
    [root@www bin]# vim ping.sh
    #!/bin/bash/
    for siteip in $(seq 1 254)
    do
        site = "192.168.30.$(siteip)"
        ping -c 1 -W 1 $(site) & > /dev/null
        if [ "$?" == "0" ];then
            echo "$site is up"
        else
            echo "$site is down"
        fi
    done
    注意:如果被检测主机与当前主机处于同一网络内,则TTL默认是用64,反之,TTL默认255.

    找出最大MTU值

    [root@www ~]# ping -c 2 -s 1000 -M do 223.5.5.5
    PING 223.5.5.5 (223.5.5.5) 1000(1028) bytes of data.
    1008 bytes from 223.5.5.5: icmp_seq=1 ttl=128 time=14.1 ms
    1008 bytes from 223.5.5.5: icmp_seq=2 ttl=128 time=13.3 ms
    
    --- 223.5.5.5 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1015ms
    rtt min/avg/max/mdev = 13.341/13.736/14.131/0.395 ms
    有响应,表示可以接受这个数据包,反之,则说明MTU太大了
    [root@www ~]# ping -c 2 -s 80000 -M do 192.168.30.12
    ping: packet size too large: 80000
    通常情况下,不要随意调整MTU值,需要调整的一般是以下情况:
    因为全部的主机都是在内部的局域网,如集群架构(cluster)的环境下,由于内部的网络节点都是我们可以控制的,因此可以通过修改MTU来提高网络效率
    因为操作系统默认的MTU与网络不符,导致某些网站可以顺利连接,某些网站则无法连接,以windows操作系统作为连接共享的主机时,在Client端容易出现这个问题。

    常见接口及对应的MTU值

    网络接口    MTU
    Ethernet    1500
    PPPOE   1492
    Dial-up(Modem) 576

    两主机间各节点分析:traceroute

    [root@www ~]# traceroute [选项与参数] IP
    选项与参数:
    -n:可以不必进行主机的名称解析,单纯用IP,速度快
    -U:使用UDP的port 33434来进行检测,这是默认的检测协议
    -I:使用ICMP的方式来进行检测
    -T:使用TCP来进行检测,一般使用port 80测试
    -w:若对方主机在几秒钟内没有回应就说明不通,默认5秒
    -p 端口号:若不想使用UDP与TCP的默认端口来检测,可在此改变端口号
    -i 设备:用在比较复杂的环境,如果网络接口很多很复杂时,才会用到此参数。
    如当前主机有两条ADSL可以连接到外部,那么当前主机有两个ppp,此时就可以使用-i来选择是ppp0还是ppp1
    -g 路由:与-i的参数相仿,只是-g后面接的是gateway的IP

    检测本机至baidu的连接状态

    [root@www ~]# traceroute -n www.baidu.com
    traceroute to www.baidu.com (115.239.210.27), 30 hops max, 60 byte packets
     1  192.168.30.2  0.128 ms  0.390 ms  0.402 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
    星号可能是防火墙设备等的情况导致
    使用TCP来检测,等待时间1s
    [root@www ~]# traceroute -w 1 -n -T  www.baidu.com
    traceroute to www.baidu.com (115.239.210.27), 30 hops max, 60 byte packets
     1  192.168.30.2  0.128 ms  0.102 ms  0.342 ms
     2  115.239.210.27  13.163 ms  11.596 ms  12.818 ms

    查看本机的网络连接与后门:netstat

    [root@www ~]# netstat -[rn]       //与路由相关的参数
    [root@www ~]# netstat -[antulpc]  //与网络接口有关的参数
    选项与参数:
    与路由相关的参数说明:
    -r:列出路由表(router table)功能等同route命令
    -n:不是用主机名与服务名称,使用IP与port number如同route -n
    与网络接口有关的参数:
    -a:列出所有的连接状态,包括tcp/udp/unix socket等
    -t:仅列出TCP数据包的连接
    -u:仅列出UDP数据包的连接
    -l:仅列出已在Listen(监听)的服务的网络状态
    -p:列出PID与Program的文件名
    -c:可以设置几秒钟后自动更新一次,如-c 5 为每5s更新一次网络状态的显示

    实例1 列出当前的路由表状态,且以IP及port number进行显示

    [root@www ~]# netstat -rn
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    192.168.30.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
    0.0.0.0         192.168.30.2    0.0.0.0         UG        0 0          0 eth0
    其实效果跟route -n一样

    实例2 列出当前的所有网络连接状态,使用IP与port number

    [root@www ~]# netstat -an
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State      
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
    tcp        0      0 127.0.0.1:25                0.0.0.0:*   
    .....省略.....
    上述数据说明:
    Proto:该连接的数据包协议,主要为TCP/IP等数据包
    Recv-Q:由非用户程序连接所复制而来的总bytes数
    Send-Q:由远程主机发送而来,但不具有ACK标志的总bytes数,亦指主动连接SYN或其他标志的数据包所占的bytes数。
    Local Address:本地端的地址,可以是IP(-n选项存在时),也可以是完整的主机名。使用的格式就是”IP:port“,只是IP的格式有IPv4及IPv6的差异。如上述代码所示,在port 22的接口中,使用”::22“就是针对IPv6的现实,事实上,它就相当于0.0.0.022.至于port25仅针对lo接口开放,意指Internet基本上无法连接到本机的25端口的。
    Foreign Address:远程主机的IP及port number
    stat:状态栏,主要有以下几种状态
        ESTABLISED:已建立的连接状态
        SYN_SENT:发出主动连接(SYN标志)的连接数据包
        SYN_RECV:接收到一个要求连接的主动连接数据包
        FIN_WAIT1:该套接字服务(socket)已中断,该连接正在断线中
        FIN_WAIT2:该连接已挂断,但正在等待对方主机响应断线确认的数据包
        TIME_WAIT:该连接已挂断,但socket还在网络上等待结束。
        LISTEN:通常用在服务的监听port,可使用”-l“参数查阅

    实例 3显示当前已经启动的网络服务

    [root@www ~]# netstat -tlnup 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1644/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1966/master         
    tcp        0      0 0.0.0.0:47673               0.0.0.0:*                   LISTEN      1588/rpc.statd      
    tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      2031/smbd           
    ............省略.........

    实例4 查看本机上所有的网络连接状态

    [root@www ~]# netstat -anltup
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1644/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1966/master         
    tcp        0      0 0.0.0.0:47673               0.0.0.0:*                   LISTEN      1588/rpc.statd 
    ...........省略.............
    如果想要终止一个服务,将其对应的PID找出来,kill掉即可。

    在Linux系统中服务名称与端口对应的信息存放在/etc/services文件中。

    检测主机名与IP的对应

    host命令

    [root@www ~]# host [-a] hostname [server]
    选项与参数:
    -a:列出该主机详细的各项主机名设置数据
    [server] :可以使用由/etc/resollv.conf文件定义的DNS服务器IP来查询

    实例1 列出baidu.com的IP

    [root@www ~]# host www.baidu.com
    www.baidu.com is an alias for www.a.shifen.com.
    www.a.shifen.com has address 115.239.211.112
    www.a.shifen.com has address 115.239.210.27

    可以看出解析出来的IP是115.239.211.112和115.239.210.27,拿其中一个IP来说,115.239.211.112是由/etc/recolv.conf文件解析出来的,如果不想使用这个文件来解析,可以使用

    [root@www ~]# host www.baidu.com 223.5.5.5
    Using domain server:
    Name: 223.5.5.5
    Address: 223.5.5.5#53
    Aliases: 
    
    www.baidu.com is an alias for www.a.shifen.com.
    www.a.shifen.com has address 180.97.33.107
    www.a.shifen.com has address 180.97.33.108

    另外一个命令nslookup

    [root@www ~]# nslookup [-query=[type]] [hostname[IP]]
    选项与参数:
    -query=type:查询的类型,除了传统的IP与主机名对应外,DNS还有很多信息,所以我们可以查询很多的信息,包括mx、cname等
    如-query=mx的查询方法

    实例1 找出www.sina.com.cn的IP

    [root@www ~]# nslookup www.sina.com.cn
    Server:        192.168.30.2
    Address:    192.168.30.2#53
    
    Non-authoritative answer:
    www.sina.com.cn    canonical name = spool.grid.sinaedge.com.
    Name:    spool.grid.sinaedge.com
    Address: 202.102.94.124

    实例2 找出223.5.5.5的主机名

    [root@www ~]# nslookup 223.5.5.5
    Server:        192.168.30.2
    Address:    192.168.30.2#53
    
    Non-authoritative answer:
    5.5.5.223.in-addr.arpa    name = public1.alidns.com.
    
    Authoritative answers can be found from:

    远程连接命令与即时通信软件

    telnet命令

    因为默认没有安装telnet,所以需要安装telnet
    [root@www ~]# yum install -y telnet
    实例1 检测本地主机的21这个port是否正确
    [root@www ~]# telnet localhost 21
    Trying ::1...
    telnet: connect to address ::1: Connection refused
    Trying 127.0.0.1...
    telnet: connect to address 127.0.0.1: Connection refused
    #出现这样的信息,代表这个port没有启动或者是这个连接有问题,因为被refused了
    [root@www ~]# telnet localhost 25
    Trying ::1...
    Connected to localhost.
    Escape character is '^]'.
    220 www.xueji.com ESMTP Postfix
    ehlo localhost
    250-www.xueji.com
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    quit
    221 2.0.0 Bye
    Connection closed by foreign host

    ftp连接

    [root@www ~]# ftp [host | IP] [port]
    实例1 连接到昆山科大去看一下
    首先要安装ftp
    [root@www ~]# yum install -y ftp 
    [root@www ~]# ftp ftp.ksu.edu.tw
    Connected to ftp.ksu.edu.tw (120.114.150.21).
    220 Welcome to Kun Shan University FTP service.
    Name (ftp.ksu.edu.tw:root): anonymous
    331 Please specify the password.
    Password:  //直接回车
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> help
    Commands may be abbreviated.  Commands are:
    
    !        debug        mdir        sendport    site
    $        dir        mget        put        size
    account        disconnect    mkdir        pwd        status
    append        exit        mls        quit        struct
    ascii        form        mode        quote        system
    bell        get        modtime        recv        sunique
    binary        glob        mput        reget        tenex
    bye        hash        newer        rstatus        tick
    case        help        nmap        rhelp        trace
    cd        idle        nlist        rename        type
    cdup        image        ntrans        reset        user
    chmod        lcd        open        restart        umask
    close        ls        prompt        rmdir        verbose
    cr        macdef        passive        runique        ?
    delete        mdelete        proxy        send
    ftp> dir   //显示远程服务器目录内容
    ftp> cd   //切换到目录
    ftp> get  //下载单一文件get后面直接跟文件名
    ftp> put  //上传单个文件
    ftp> mget //下载多个文件
    ftp> delete //删除多个文件
    ftp> mkdir //创建目录
    ftp> lcd  //切换到本地主机的/home/目录
    ftp> passive //启动或关闭passive
    ftp> binary  //数据传输模式设置为binary
    ftp> bye //结束ftp
    ftp> quit
    221 Goodbye.

    自动化脚本(lftp)

    [root@www ~]# ltfp [-p port] [-u user[,pass]] [host|IP]
    [root@www ~]# ltfp -f filename
    [root@www ~]# ltfp -c "commands"
    选项参数:
    -p:后面可以直接上远程FTP主机提供的port
    -u:后面则是接上账号与密码,就能够连接上远程主机了,如果没有加账号密码,lftp默认会使用anonymous尝试匿名登录
    -f: 可以将命令写入脚本中,可以帮助进行shellshell script自动处理
    -c:后面直接加上所需要的命令
    [root@www ~]# yum install -y lftp
    [root@www ~]# lftp ftp.ksu.edu.tw
    lftp ftp.ksu.edu.tw:~> bye    //看这里直接就登录上去
    自动处理脚本
    [root@www ~]# cd bin/
    [root@www bin]# vim lftp.sh
    #!/bin/bash
    open ftp.ksu.edu.tw
    cd /pub/CentOS
    mget -c -d RPM-GPG*
    bye

    图形接口的即时通信软件Pidgin(gaim的延伸)这里不再演示。

    文字浏览器links

    [root@www ~]# links [options] [URL]
    选项与参数:
    -anonymous [0|1]:是否使用匿名登录的意思
    -dump [0|1]:是否将网页的数据直接输出到standard out 而非links软件功能
    -dump_charset:后面接想要通过dump输出到屏幕的语系编码,简体中文使用cp936
    实例1 [root@www ~]# links http://www.kernel.org

    文字接口下载器wget

    如果要连接的网站有账号和密码保护,可以利用--http-user=username和--http-password=password两个参数,--quiet:不显示wget在捕获数据时的显示信息
    除此之外,还可以在/etc/wgetrc文件中添加proxy

    数据抓包

    文字接口数据包捕获器tcpdump

    [root@www ~]# tcpdump [-Aennqx] [-i 接口] [-w 存储文件名] [-c 次数] [-r 文件] [所要摘取的数据包数据格式] 
    选项与参数:
    -A:数据包的内容以ASCII显示,通常用来抓取WWW网页数据包数据
    -e:使用数据链路层(OSI第二层)的MAC数据包数据来显示
    -nn:直接以IP及port number显示,而非主机名与服务名称
    -q:仅列出较为简短的数据包信息,每一行的内容比较精简
    -x:可以列出十六进制(hex)以及ASCII的数据包内容,对于监听数据包内容很有用
    -i:后面接要监听的网络接口,如eth0、lo、ppp0等的界面
    -w:如果你要将监听所得的数据包数据存储下来,用这个参数就对了,后面接文件名
    -c: 监听数据包数,如果没有这个参数,tcpdump会持续不断的监听,直到用户输入Ctrl+c为止
    -r:从后面接的文件将数据包数据读出来,这个文件是已经存在的文件,并且这个文件是由-w所制作出来的
    所获取的数据包格式:我们可以专门针对某些通信协议或者是IP来源进行数据包捕获
    那就可以简化输出的结果,并取得最有用的信息,常见的表示方法有:
      'host foo'、'host 127.0.0.1':针对单台主机来进行数据包捕获
      'net 192.168':针对某个网络来进行数据包的捕获
      'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标(dst)限制
      'tcp port 21':还可以针对通信协议检测,如tcp、udp、arp、ether等

    实例1 以IP与port number获取eth0这个网卡上的数据包,持续3s

    [root@www ~]# tcpdump -i eth0 -nn 
    11:54:25.502894 IP 192.168.30.12.22 > 192.168.30.1.13190: Flags [P.], seq 2275120:2275392, ack 449, win 211, length 272
    11:54:25.503018 IP 192.168.30.12.22 > 192.168.30.1.13190: Flags [P.], seq 2275392:2275568, ack 449, win 211, length 176
    
    ....中间省略
    15317 packets captured   //获取到的数据包数量
    15318 packets received by filter //由过滤所得的总数据包数量
    0 packets dropped by kernel //被内核所丢弃的数据包
    上述数据解释:
    11:54:25.502894:这是该数据包捕获的时间,“时:分:秒”
    IP:通过的通信协议是IP
    192.168.30.12.22 >传送端是192.168.30.12这个IP,而传送的port number为22,大于(>)的符号指的是数据包的传输方向
    192.168.30.1.13190:接收端的IP是192.168.30.1,且该主机开启port 1937来接收。
    [P.],seq 2275120:2275392:这个数据包带有PUSH的数据传输标志,且传输的数据为整个数据的2275120~2275392byte。
    ack 449:ACK的相关资料

    只取出port 21的连接数据包

    [root@www ~]# tcpdump -i eth0 -nn port 21
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

    打开两个终端窗口

    在第一个窗口

    [root@www ~]# tcpdump -i lo -nn

    在第二个窗口

    [root@www ~]# ssh localhost
    The authenticity of host 'localhost (::1)' can't be established.
    RSA key fingerprint is 70:92:4b:c7:32:d2:bd:9a:4c:e8:90:c0:3e:f3:ac:2b.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
    root@localhost's password: 
    Last login: Fri Sep  7 12:09:25 2018 from 192.168.30.1

    再回到第一个窗口查看

    [root@www ~]# tcpdump -i lo -nn 
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
    12:09:37.171713 IP6 ::1.43812 > ::1.22: Flags [S], seq 548606666, win 65476, options [mss 65476,sackOK,TS val 33405488 ecr 0,nop,wscale 7], length 0
    12:09:37.171730 IP6 ::1.22 > ::1.43812: Flags [S.], seq 3512480885, ack 548606667, win 65464, options [mss 65476,sackOK,TS val 33405488 ecr 33405488,nop,wscale 7], length 0
    12:09:37.171742 IP6 ::1.43812 > ::1.22: Flags [.], ack 1, win 512, options [nop,nop,TS val 33405488 ecr 33405488], length 0
    12:09:37.199189 IP6 ::1.22 > ::1.43812: Flags [P.], seq 1:22, ack 1, win 512, options [nop,nop,TS val 33405497 ecr 33405488], length 21
    12:09:37.199214 IP6 ::1.43812 > ::1.22: Flags [.], ack 22, win 512, options [nop,nop,TS val 33405515 ecr 33405497], length 0
    .....省略

    如何使用tcpdump来监听来自eth0网卡且通信协议为port22,目标数据包来源为192.168.30.12的数据包?

    [root@www ~]# tcpdump -i eth0 -nn 'port 22 and src host 192.168.30.9'
    在另一个主机上(192.168.30.9)上执行ping 192.168.30.12
    再去第一个窗口查看
    [root@www ~]# tcpdump -i eth0 -nn 'port 22 and src host 192.168.30.9'
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    12:16:33.731358 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8004:8120, ack 53, win 273, length 116
    12:16:34.731344 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8120:8236, ack 53, win 273, length 116
    12:16:35.731101 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8236:8352, ack 53, win 273, length 116
    12:16:36.731267 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8352:8468, ack 53, win 273, length 116
    12:16:37.731392 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8468:8584, ack 53, win 273, length 116
    12:16:38.731473 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8584:8700, ack 53, win 273, length 116
    12:16:39.731602 IP 192.168.30.9.22 > 192.168.30.1.5582: Flags [P.], seq 8700:8816, ack 53, win 273, length 116

    图形接口数据包捕获利器:wireshark

    [root@www ~]# yum install -y wireshark wireshark-gnome

    任意启动TCP/UDP数据包的端口连接:nc、netcat

    [root@www ~]# nc [-u] [IP|host] [port]
    [root@www ~]# nc -l [IP|host] [port]
    选项与参数
    -l:作为监听之用,也就是打开一个port来监听用户的连接
    -u:不使用TCP而使用UDP作为连接数据包状态
    实例1 与telenet类似,连接本地端port 25查阅相关信息
    [root@www ~]# yum install -y nc
    [root@www ~]# nc localhost 25
    220 www.xueji.com ESMTP Postfix
    实例2 激活一个port 20000 来监听用户的连接要求
    [root@www ~]# nc -l localhost 20000 &
    [1] 10374
    [root@www ~]# netstat -lntup | grep nc
    tcp        0      0 ::1:20000                   :::*                        LISTEN      10374/nc
    打开另一个窗口,执行
    [root@www ~]# nc localhost 20000 //回车之后,输入字符串
    haha  
    回到第一个窗口查看
    [root@www ~]# haha
  • 相关阅读:
    前端发版后清理浏览器缓存处理
    CF235A 【LCM Challenge】
    CF39H 【Multiplication Table】
    CF171C 【A Piece of Cake】
    CF450A 【Jzzhu and Children】
    CF387B 【George and Round】
    火柴棒等式
    P1062 数列 题解
    P1045 麦森数
    (原创)最短路径那些事-1
  • 原文地址:https://www.cnblogs.com/zd520pyx1314/p/9602333.html
Copyright © 2020-2023  润新知