常用的网络命令 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的功能。