vlambda博客
学习文章列表

常用的网络命令 inCentOS(index: route, ip, ifconfig)

ifup 与 ifdown 仅能就/etc/sysconfig/network-scripts内的ifcfg-ethX(X为数字)进行启动或关闭的操作。


ifconfig {interface} {up|down}

ifconfig interface {options}

options:

    up, down

    mtu            :单位为byte

    netmask

    broadcast


如果输入ifconfig eth0,则不管该网卡是否已经启动,都会显示出相关信息



各项数据(仅记 靠英文名记不住的)


RX:该网络由启动目前为止的数据包接受情况,packets代表数据包数量、errors代表数据包发生错误的数量、dropped代表数据包由于有问题而遭丢弃的数量等。

TX:发送情况

collisions:代表数据包冲突的情况,如果发生太多次,表示你的网络状况不太好

txqueuelen:代表用来传输数据的缓冲区的存储长度

RX bytes、TX bytes:接收、发送字节总量


例子:

ifconfig eth0:0 192.168.50.50

在实体网卡上,再仿真一个网络接口。也就是一张网卡上面设置多个IP的意思。

ifconfig eth0:0 down


用ifconfig做出的设置都是暂时,可用

/etc/init.d/network restart    使刚刚设置的数据全部失效,会以ifcfg-ethX的设置为主



修改路由:route

route [-nee]

route add/del [-net | -host] [网络或主机] netmask [mask] [gw | dev]

查看的参数:

    -n:不要使用通用协议或主机名,直接使用IP或port number;

    -ee:显示更详细的信息


例如:route add default gw 192.168.1.250

# 增加默认路由的办法。请注意,只要有一个默认路由就够了



在显示的数据中,Flags代表的意义如下:

U(route is up):该路由是启动的

H(target is a host):目标是一台主机(IP)而非网络

G(use gateway):需要通过外部的主机来传递数据包

R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息的标志。

D(dynamiclly installed by daemon or redirect):动态路由 

M(modified from routing daemon or redirect):路由已经被修改了

!(reject route):这个路由将不会被接受(用来阻止不安全的网络)


路由是有顺序的,不论数据是从哪个网卡接收和发送,都要按照路由表中的顺序,一条一条过,直到找到合适的


要记得,当出现“SIOCADDRT:Network unreachable”这个错误时,肯定是由于gw后面接的IP无法直接与你的网络沟通(Gateway 并不在你的网络内)


网络参数综合命令:ip(综合了ifconfig和route,/sbin/ifup也是利用ip实现的)

ip [option] [动作] [命令]

option:设置的参数,主要有:

    -s:显示出设备的统计数据(statistics)

操作:也就是可以针对哪些网络参数进行操作,包括:

    addr/address:关于额外的IP协议,例如多IP的实现等

    route:与路由有关的相关设置


ip link例子:

ip link show 

ip -s link show eth0


ip link set eth0 up

ip link set eth0 down

ip link set eth0 mtu 1000


ip link set eth0 down                # 要修改网卡名称,要先关闭接口

ip link set eth0 name vbird      # 重新设置

ip link show 


ip link set eth0 address aa:aa:aa:aa:aa:aa

ip link show eth0


如果说ip link是与OSI第二层数据链路层有关的的话,那么ip address(ip addr)就是与第三层网络层有关的参数了。



ip address:

ip address show     

ip address [add | del] [ip参数] [dev 设备名] [相关参数]

相关参数有下面这些:

    label        :也就是这个设备的别名,例如eth0:0

    scope      :这个选项的参数,通常是这几个大类:

        global:允许来自所有来源的连接

        site     :仅支持IPv6,仅允许本主机的连接

        link     :仅允许本设备自我连接

        host    :仅允许本主机内部的连接

    

例子:

ip address show     

ip address add 192.168.50.50/24 broadcast + \ dev eth0 label eth0:vbird


ip address show eth0

ip address del 192.168.50.50/24 dev eth0


ip route:

功能几乎与route差不多,不过可以进行额外的参数设计,例如MTU的规划等

ip route show 

ip route [add | del] [ip 或 网络号] [via gateway] [dev 设备]

选项与参数:

show:单纯的显示路由表,也可以使用list

via:从哪个gateway出去,不一定需要

dev:有哪个设备连出去,这就需要了

mtu:设置额外的设置MTU的数值


例子:

ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0 

# 通往外部的路由


ip route add default via 192.168.1.254 dev eth0

# 默认路由


ip route del 192.168.10.0/24


还有一个ethtool命令,可以man ethtool自己看一下。


无线网路:iwlist, iwconfig

man iwlist

man iwconfig


网络排查与查看命令

ping的选项(仅记一两个,其余的,自己看)

-s 数值:发送出去的ICMP数据包大小,默认为56bytes,不过可以放大此数值

-W 数值:等待响应对方主机的秒数

-M [do|dont]:主要在检测网络的MTU数据大小,两个常见的项目是:

    do    :传送DF(Don't Fragment)标志,让数据包不能重新拆包与打包

    dont :不要传送DF标志,表示数据 可以 在其他主机上拆包与打包


响应中看到的TTL: 每经过一个带有MAC的节点(node)时,例如router、brider时,TTL就会减少1,默认的TTL为255,你可以通过-t 150之类的方法来重新设置TTL数值。


扫描局域网的脚本:

#!/bin/bash

for siteip in $(sql 1 254)

do 

    site="192.168.1.${siteip}"

    ping -c1 -W1 ${site} &> /dev/null

    if [ "$?" == "0" ]; then

        echo "$site in UP"

    else

        echo "$site is DOWN"

    fi

done

    

虽然Ping -s 选项可以调数据包大小,当

ping -c 2 -s 8000 -M do 192.168.1.254 

#这里的8000只是测试随意填的,自己根据需要调


不过,需要知道的是,由于IP数据包包头(不含options)就已经占用了20bytes,再加上ICMP的报头有8bytes所以当你在使用-s size的时候,那个数据包的大小就需要扣除(20+8=28)的大小了。因此如果要使用的MTU为1500时,就需要下达“ping -s 1472 -M do xx.yy.zz.ip”


MTU的大小要用ifconfig或ip调大。

不过,MTU不要随便调整,除非真的有问题:

局域网,例如(群及架构cluster)

系统默认MTU与网络不符


另外,每种(物理)连接方式都有不同的MTU值。例如:

Ethernet                     1500

PPPoE                        1492

Dial-up(Modem)       576


两主机间各节点分析:traceroute

traceroute [选项与参数] IP

-n    :可以不必进行主机的名称解析,单纯用IP,速度较快

-U    :使用UDP的port 33434来进行检测,这是默认的检测协议

-I     :使用ICMP的方式来进行检测

-T    :使用TCP来进行检测,一般使用port 80测试

-w   :若对方主机在几秒中内没有回应就声明不通...默认是5秒

-p    端口号:若不想使用UDP与TCP的默认端口来检测,可以在此改变端口号

-i     设备:选择使用哪个设备连出去

-g    路由:与-i的参数相仿,只是-g后面接的是gateway的IP就是了。


会返回星号,代表该node可能设有某些防护措施,让我们发送的数据包信息被丢弃掉。因为我们是直接通过路由器传递数据包,并没有进入路由器去取得路由器的使用资源,所以某些路由器仅支持数据包转递,并不会接受来自客户端的各项检测,此时就会出现上述的问题


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

例子:

netstat -rn    列出路由表状态,以IP及port number进行显示:

netstat -an    所有的网络连接


Proto: 该连接的数据包协议,主要为TCP/UDP等数据包。

Recv-Q: 由非用户程序连接所复制而来的总bytes数。

Send-Q: 由远程主机发送而来,但不具有ACK标志的总bytes数,亦指主动连到SYN或其他标志的数据包所占的bytes数。


Local Address: 

Foreign Address: 


stat:状态栏,主要的状态有:

    ESTABLISED: 已建立连接的状态。


    SYN_SENT: 发出主动连接(SYN标志)的连接数据包。

    SYN_RECV: 接收到一个要求连接的主动连接数据包。


    FIN WAIT1: 该套接字服务(socket) 已中断,该连接正在断线当中。

    FIN WAIT2: 该连接已挂断,但正在等待对方主机响应断线确认的数据包


    TIME WAIT:该连接已挂断,但socket还在网络上等待结束


    LISTEN: 


只有root可以启动小于1024的port

至于传统的Unix socket的数据,使用man netstat查阅


服务名称与port number的对应关系在/etc/services



检测主机名与IP的对应:host、nslookup

host [-a] hostname [server]

-a:列出该主机详细的各项主机名设置数据

[server]:可以使用不是由/etc/resolv.conf文件定义的DNS服务器IP来查询


例如:

host www.yahoo.com

host www.yahoo.com 211.161.46.84     # 指定一个DNS服务器


nslookup [-query=[type]] [hostnam|IP]

-query=type:查询的类型,例如:mx、cname等


FTP连接软件:ftp、lftp

lftp [-p port] [-u user[,pass]] [host|IP]

lftp -f filename         # 可以将命令写入脚本中

lftp -c "commands"  # 后面直接加需要的命令


例如:

mkdir lftp; cd lftp

vim lftp.ksu.sh >

open ftp.ksu.edu.tw

cd /pub/CentOS/

mget -c -d RPM-GPG*

bye


lftp -f lftp.ksu.sh


也可以:

vim lftp.ksu.sh >

lftp -c "open ftp.ksu.edu.tw

cd /pub/CentOS/

mget -c -d RPM-GPG*

bye"


sh lftp.ksu.sh


图形接口的即时通信软件:Pidgin(gaim的延伸)

yum install pidgin


文字浏览器:links

links [options] [URL]

-anonymous [0|1]:是否使用匿名登陆的意思

-dump [0|1]         :是否将网页的数据直接输出到standard out,而非links软件功能

-dump_charset    :后面接想通过dump输出到屏幕的语系编码,简体中文使用cp936


文字接口下载器:wget

wget [option] [网址]

若想要连接的网站有提供账号与密码的保护时,可以利用这两个参数来输入

--http-user=username

--http-password=pasword

--quiet:不要显示wget在捕获数据时的显示信息


可以通过proxy的帮助下载,通过修改/etc/wgetrc来设置你的代理服务器,在该文件内,搜索proxy


tcpdump

看书


nc、netcat

如果在编译nc软件时给予“GAPING_SECURITY_HOME”参数的话,这个软件还可以用来取得客户端的bash。

可以在/usr/share/doc/nc-1.84/scripts目录下看看这些script,来了解nc的功能。