Linux--NiaoGe-Service-05
Posted Luckyzd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--NiaoGe-Service-05相关的知识,希望对你有一定的参考价值。
1.设置网络参数的命令
命令名称 | 作用 |
ifconfig | 查询、设置网卡与IP网络等相关参数 |
ifup、ifdown | 启动、关闭网络接口 |
route | 查看配置路由表(route table) |
ip | 整合式的命令,可以直接修改上述提到的功能 |
ifconfig、ifup、ifdown
[[email protected] ~]# ifconfig {interface} {up|down} //查看与启动接口 [[email protected] ~]# ifconfig interface {options} //设置与修改接口 常用选项及参数说明: interface:网络接口名称,包括eth0,eth1,ppp0等。 options:可以使用的参数。包括: up,down:启动、关闭该接口(不涉及任何参数) mtu:可以设置不同的MTU数值。 netmask:子网掩码 broadcast:广播地址 [[email protected] ~]# 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
[[email protected] ~]# ifconfig eth0 192.168.30.120 > netmask 255.255.255.0 mtu 8000 [[email protected] ~]# 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命令,直接 [[email protected] ~]# ifup eth0 [[email protected] ~]# ifdown eth0 即可。
修改路由route
[[email protected] ~]# route [-nee] [[email protected] ~]# route add [-net | -host] [网络或主机] netmask [mask] [gw | dev] [[email protected] ~]# route del [-net | -host] [网络或主机] netmask [mask] [gw | dev] 常用参数: -n:不是用通信协议,直接使用IP地址或者端口号; -ee:显示更详细的信息 增加(add)删除(del)路由的相关参数 -net:后接的路由为一个网络; -host:后接的为链接到单台主机的路由; netmask:与网络有关,可以设置netmask决定网络的大小 gw:gateway的简写,后接IP的数值,与dev不同 dev:如果只是要指定由哪一块网卡连接出去,则使用这个设置,后接eth0等。 [[email protected] ~]# 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 [[email protected] ~]# 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)
路由的增加、删除
[[email protected] ~]# route del -net 192.168.130.12 netmask 255.255.255.0 dev eth0 注意:删除路由时,必须将路由表上出现的信息都写入,包括netmask、dev等 [[email protected] ~]# route add -net 192.168.20.120 netmask 255.255.255.0 dev eth0 注意:增加的路由必须要与主机的当前网络可一通信 [[email protected] ~]# route add default gw 192.168.30.250 注意:增加默认路由的方法,只要有一个默认路由的IP即可,同样要求增加的路由必须可以与主机当前的LAN可以通信。 所有操作完毕后,重启网络服务即可生效!
网络参数综合命令:ip
[[email protected] ~]# ip [option] [动作] [命令] 选项与参数: option:设置的参数,主要有: -s:显示出设备的统计数据(statistics),如接收的数据包总数等; 操作:即针对哪些网络参数进行操作,包括: link : 与设备(device)相关的设置,包括MTU、MAC之地等; addr/address:关于额外的IP协议,如多IP的实现等; route:与路由有关的相关设置 关于接口设备(device)的相关设置:ip link [[email protected] ~]# ip [-s] link show //单纯的查看该设备的县官信息 [[email protected] ~]# ip link set [device] [动作参数] 选项与参数: show:进现实出这个设备的相关属性,如果加上-s会显示更多统计数据。 set:可以开始设置项目,device值得是eth0,eth1等设备名称。 动作参数: up | down : 启动或关闭摸个解扩,其他参数使用默认的以太网 address::如果这个设备可以更改MAC的话,用这个参数修改 name:给予这个设备一个特殊的名字 mtu:最大传输单元
显示本机所有接口信息
[[email protected] ~]# 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 [[email protected] ~]# 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
[[email protected] ~]# ip link set eth0 up/down [[email protected] ~]# ip link set eth0 mtu 1000 //设置MTU
修改网卡信息
[[email protected] ~]# ip link set eth0 name xueji RTNETLINK answers: Device or resource busy #上述提示很明确,所以修改之前先关闭eth0,然后在修改 [[email protected] ~]# ip link set eth0 down [[email protected] ~]# ip link set eth0 name xueji [[email protected] ~]# ip link show
[[email protected] ~]# ip link set eth0 address aa:bb:cc:dd:ee:ff //修改的MAC地址信息
关于额外的IP的相关设定
[[email protected] ~]# ip address show [[email protected] ~]# 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参数: [[email protected] ~]# ip address show 实例2 添加一个接口,名称设为eth0:xueji [[email protected] ~]# ip address add 192.168.30.120/24 broadcast + dev eth0 label eth0:xueji [[email protected] ~]# 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接口 [[email protected] ~]# ip address del 192.168.30.120/24 dev eth0
关于路由的设置
[[email protected] ~]# 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 [[email protected] ~]# 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 显示当前的路由信息 [[email protected] ~]# 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 添加路由主要是本机直接可沟通的网络 [[email protected] ~]# ip route add 192.168.130.0/24 dev eth0 [[email protected] ~]# 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 [[email protected] ~]# ip route add 192.168.31.0/24 via 192.168.30.12 dev eth0 [[email protected] ~]# 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 添加默认的路由 [[email protected] ~]# ip route add default via 192.168.20.12 dev eth0 (这里是不通的,因为我系统环境限制,方法是正确的) 实例5 删除上述添加的路由 [[email protected] ~]# ip route del 192.168.31.0/24 [[email protected] ~]# ip route del 192.168.130.0/24
网络排错及相关命令
[[email protected] ~]# 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是否存活 [[email protected] ~]# 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,也仅检测一次
[[email protected] ~]# cd bin/ [[email protected] 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值
[[email protected] ~]# 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太大了 [[email protected] ~]# 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
[[email protected] ~]# 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的连接状态
[[email protected] ~]# 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 [[email protected] ~]# 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
[[email protected] ~]# netstat -[rn] //与路由相关的参数 [[email protected] ~]# 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进行显示
[[email protected] ~]# 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
[[email protected] ~]# 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.0:22.至于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显示当前已经启动的网络服务
[[email protected] ~]# 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 查看本机上所有的网络连接状态
[[email protected] ~]# 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命令
[[email protected] ~]# host [-a] hostname [server] 选项与参数: -a:列出该主机详细的各项主机名设置数据 [server] :可以使用由/etc/resollv.conf文件定义的DNS服务器IP来查询
实例1 列出baidu.com的IP
[[email protected] ~]# 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文件解析出来的,如果不想使用这个文件来解析,可以使用
[[email protected] ~]# 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
[[email protected] ~]# nslookup [-query=[type]] [hostname[IP]] 选项与参数: -query=type:查询的类型,除了传统的IP与主机名对应外,DNS还有很多信息,所以我们可以查询很多的信息,包括mx、cname等 如-query=mx的查询方法
实例1 找出www.sina.com.cn的IP
[[email protected] ~]# 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的主机名
[[email protected] ~]# 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 [[email protected] ~]# yum install -y telnet 实例1 检测本地主机的21这个port是否正确 [[email protected] ~]# 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了 [[email protected] ~]# 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连接
[[email protected] ~]# ftp [host | IP] [port] 实例1 连接到昆山科大去看一下 首先要安装ftp [[email protected] ~]# yum install -y ftp [[email protected] ~]# 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)
[[email protected] ~]# ltfp [-p port] [-u user[,pass]] [host|IP] [[email protected] ~]# ltfp -f filename [[email protected] ~]# ltfp -c "commands" 选项参数: -p:后面可以直接上远程FTP主机提供的port -u:后面则是接上账号与密码,就能够连接上远程主机了,如果没有加账号密码,lftp默认会使用anonymous尝试匿名登录 -f: 可以将命令写入脚本中,可以帮助进行shellshell script自动处理 -c:后面直接加上所需要的命令 [[email protected] ~]# yum install -y lftp [[email protected] ~]# lftp ftp.ksu.edu.tw lftp ftp.ksu.edu.tw:~> bye //看这里直接就登录上去 自动处理脚本 [[email protected] ~]# cd bin/ [[email protected] bin]# vim lftp.sh #!/bin/bash open ftp.ksu.edu.tw cd /pub/CentOS mget -c -d RPM-GPG* bye
图形接口的即时通信软件Pidgin(gaim的延伸)这里不再演示。
文字浏览器links
[[email protected] ~]# links [options] [URL] 选项与参数: -anonymous [0|1]:是否使用匿名登录的意思 -dump [0|1]:是否将网页的数据直接输出到standard out 而非links软件功能 -dump_charset:后面接想要通过dump输出到屏幕的语系编码,简体中文使用cp936 实例1 [[email protected] ~]# links http://www.kernel.org
文字接口下载器wget
如果要连接的网站有账号和密码保护,可以利用--http-user=username和--http-password=password两个参数,--quiet:不显示wget在捕获数据时的显示信息
除此之外,还可以在/etc/wgetrc文件中添加proxy
数据抓包
文字接口数据包捕获器tcpdump
[[email protected] ~]# 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
[[email protected] ~]# 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的连接数据包
[[email protected] ~]# 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
打开两个终端窗口
在第一个窗口
[[email protected] ~]# tcpdump -i lo -nn
在第二个窗口
[[email protected] ~]# 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. [email protected]‘s password: Last login: Fri Sep 7 12:09:25 2018 from 192.168.30.1
再回到第一个窗口查看
[[email protected] ~]# 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的数据包?
[[email protected] ~]# tcpdump -i eth0 -nn ‘port 22 and src host 192.168.30.9‘ 在另一个主机上(192.168.30.9)上执行ping 192.168.30.12 再去第一个窗口查看 [[email protected] ~]# 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
[[email protected] ~]# yum install -y wireshark wireshark-gnome
任意启动TCP/UDP数据包的端口连接:nc、netcat
[[email protected] ~]# nc [-u] [IP|host] [port] [[email protected] ~]# nc -l [IP|host] [port] 选项与参数 -l:作为监听之用,也就是打开一个port来监听用户的连接 -u:不使用TCP而使用UDP作为连接数据包状态 实例1 与telenet类似,连接本地端port 25查阅相关信息 [[email protected] ~]# yum install -y nc [[email protected] ~]# nc localhost 25 220 www.xueji.com ESMTP Postfix 实例2 激活一个port 20000 来监听用户的连接要求 [[email protected] ~]# nc -l localhost 20000 & [1] 10374 [[email protected] ~]# netstat -lntup | grep nc tcp 0 0 ::1:20000 :::* LISTEN 10374/nc 打开另一个窗口,执行 [[email protected] ~]# nc localhost 20000 //回车之后,输入字符串 haha 回到第一个窗口查看 [[email protected] ~]# haha
以上是关于Linux--NiaoGe-Service-05的主要内容,如果未能解决你的问题,请参考以下文章