常用网络命令

1.ifconfig
查看和配置网络设备/接口
格式:
#ifconfig [网络设备] [参数]
 
#ifconfig eth0 up
#ifconfig eth0 down
#ifconfig eth0 arp // 启动arp协议;
#ifconfig eth0 -arp // 关闭arp协议;
#ifconfig -a // 显示全部接口信息;
#ifconfig -s // 显示接口简要信息;
#ifconfig eth0 mtu 1500 // 设置接口的MTU
#ifconfig eth0 add ipv6-addr // 添加ipv6地址;
#ifconfig eth0 del ipv6-addr //
#ifconfig eth0 netmask //  掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数
#ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE // 修改接口硬件地址
#ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255 // 
tunnel - 建立隧道,建立IPV4和IPV6之间 ?
dstaddr - 设定一个远端地址,进行点对点通信;
address 为接口设置IPV4地址;

2. Route
route命令用于查看和设置路由表。
route man的中文翻译:http://sanyk.is-programmer.com/posts/15488.html
a)显示字段的含义
- destination:目标网络或者主机;
- gateway: 网关地址,*表示没有设置;
- netmask:特别的,255.255.255.255用于主机,0.0.0.0用于默认路由;
- flag:比较多,各个flag的含义:
   - U:route is up,路由是启动的;
   - H:target is host,目标是一个主机(IP),而非网络;
   - G:use gateway,需要经过外部的主机(gateway)来转递数据包;
   - R:reinstate route for dynamic routing,使用动态路由时,恢复路由资讯的旗标;
   - D:dynamiclly installed by daemon or redirect,已经由服务或者转port设置为动态路由;
   - M:modified by daemon or redirect,路由已经被修改了;
   - !:这个路由不会被接受;
   - A:installed by addrconf
   - C:cache entry
- metric:距离,跳数,暂时没有使用;
- ref:恒为0,暂时没有使用;
- use:该路由被使用的次数,可以粗略估算通向指定网络地址的流量;
- iface:接口
- MSS:maximum segment size;
- window:
- irtt:
b)命令格式
#route -n // 直接使用IP,否则可能会导致DNS反向查询;
#route -ee // -e表示使用netstat的信息输出格式,-ee将会详细输出每个路由条目的详细信息;
#route [add|del] -[net|host] <网络或主机> netmask <网络掩码> [gw|dev]
- net表示后面的路由是一个网域,host可以省略?表示路由目标是一个主机;
- netmask决定网域的大小;
- dev:接口,指哪个接口发出;
#route add -net 192.168.156.0 netmask 255.255.255.0 gw 192.168.156.1 dev eth0 //  透过  route add  来增加一个路由!请注意,这个路由必须要能够与你互通
#route del -net 192.168.156.0 netmask 255.255.255.0 gw 192.168.156.1 dev eth0 // 使用route del删除路由时,需要将该路由对应的信息都写上,包括reject,如果有的话;
#route add -net 192.168.156.0 netmask 255.255.255.0 reject
#route add default gw 192.168.156.1

3.nslookup
用于查询域名,有交互模式和非交互模式。
在交互模式下,可以向server查询各类主机、域名的信息,或者输出域名中的主机列表。而在非交互模式下,用户可以针对一个主机或者域名仅仅获取特定的名称或者信息。
如果没有指定DNS server,就使用/etc/resolv.conf中的第一个server

选项:
#nslookup -querytype= -timeout=
#nslookup -qt=

a)非交互模式
#nslookup [-option] [dns-server]
#nslookup www.google.com // 使用/etc/resolv.conf中的默认DNS server;
#nslookup www.google.com // 使用指定的dns-server,
#nslookup -query=hinfo -timeout=10 www.google.com // 查询主机信息,10s超时;

b)交互模式
#nslookup //直接进入交互模式;
#nslookup - // 使用dns-server进入交互模式,注意 -
#nslookup // 进入交互模式
>set all // 查看常用选项的当前值;
>set class=in // 查询internet地址,另外两类chaos和hesiod已经不再使用;
>set [no]debug // 开启/关闭调试模式,会打印完整的查询和响应包;
>set [no]d2 // 开启/关闭高级调试模式,会输出nslookup内部调试信息,包括一些函数调用;
>set domain=google.com
>set domain= // 清除设置的domain
>set [no]search // 同上面的domain联合使用;
>set port=53 // 默认port也是53;
>set retry=3 // 设置重试3次;
>set timeout=10 // 设置超时值为10s;
>set type= // 设置查询类型;
>set querytype= // 设置查询类型
-- A:查看主机的IPv4地址;
-- AAAA:查看主机的IPv6地址;
-- ANY:查看关于主机域的所有信息;
-- CNAME:查找与别名对应的正式名字;
-- MINFO:查找邮箱信息;
-- MX:查找邮件交换信息;
-- NS:查找主机域的域名服务器;
-- PTR:查找与给定IP地址匹配的主机名;
-- RP:查找域负责人记录;
-- SOA:查找域内的SOA地址;
-- UINFO:查找用户信息;


4.ping
测试本机器与目的主机的连通性。它通过收发ICMP报文来实现。
可以通过参数指定报文大小、跳数、次数、超时等。

参数:
-c 5 // 执行5次;
-n // 在输出时直接打印IP,不进行反向查询;
-s 1024 // 设定发出去的ICMP包大小为1024bytes,默认时56bytes
-t 64 // ttl值,默认时255
-i 2 // interval, 两个ping包之间,2s,默认时1s,只有root user可以设置小于0.2s
-I // 接口地址 ?
-W 10 // timeout,等待秒数
-f // flood ping,测试网络带宽
-R // record-route选项,注意,只允许9个
-M hint // hint包括:do:don't fragement, dont:may fragement, want:do PMTU discovery, fragement locally when packet size is large.

#ping -c 5 -i 2 -t 64 -s 1024 192.168.156.1

5. traceroute
用来数据包从源(source)到目标主机(destination)所经过的路径,以及到每个网关的时间。
原理
向目标主机发送ttl=1,2,3,...,的ICMP包,ttl减到0时,gw会回复[ICMP timr exceeded],而如果到达了目标主机,由于其使用的port是30000以上的号码,一般应用程序不会使用,就会回一个[ICMP port unreachable].
针对每个ttl,默认发送3个包,在输出中会打印每个包来回的时间。

命令格式
traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
-f:设置第一个检测包的ttl的值;
-m:设置检测包最大的tll的值;
-F:
-g:设置来源路由网关 ???
-i:指定interface;
-I:使用ICMP响应取代UDP信息;???
-r:忽略普通的routing table,直接将数据包发送到远端主机上;
-n:直接使用IP地址,不做反向查询;
-p:设置UDP传输port;
-s:设置本地送出数据包的IP地址;
-t:设置检测数据包的TOS值;
-v:显示详细的指令执行过程;
-w:设置等待时间;
-x:开启或关闭数据包的正确性检验 ???
- 注意,最后可以设置数据包大小;


6.netstat
用于打印网络连接、路由表、收发数据统计等。

参数介绍:
-a:显示所有连线中的socket;
-n:显示IP地址,不做域名查询。有n的情况下,e对应的user id也显示数字,不是string;
-t:TCP socket
-u:UDP socket
-raw:raw socket
-i:显示interface;
-e:extend,显示网络其它信息;
-p:显示进程信息;
-r:显示route table,类似route命令;
-l:显示LISTEN状态的socket;

例子
#netstat -nltp // 
#netstat -nltpe // 
#netstat -ltpe
#netstat -ie // 类似ifconfig
netstat 与grep联合使用;
netstat与watch联合使用;
#watch -d -n 0 "netstat -atnp | grep ESTAB"

7. iptables
http://seanlook.com/2014/02/23/iptables-understand/

组成及运行
iptables是Linux内核集成的包过滤防火墙,由两部分组成:
netfilter:位于内核空间,主要由信息包过滤表组成,表中是包过滤规则;
iptables:位于用户空间,提供添加、修改、删除包过滤表中规则的界面;
常用网络命令
内核中在5个位置,添加了对包的处理,也就是5个链(chain)。链就是在特定位置处理包的规则的一个集合。
内核中有4张表,每张表代表了一类处理规则,规则有先后之分;
处理规则:如果包满足这个规则的条件,就按规则规定的进行处理。如果包不满足链中的任何一条规则,就按照链的默认规则处理。根据一条规则的处理结果,可能继续下一条规则的处理,也可能进入下一个链;

链规定了处理包的时机,表规定了对包的处理规则。

表的优先级:raw -> mangle -> nat -> filter
raw:优先级最高,可以在连接跟踪前对包进行处理。在某个链上,raw表中规则处理的包,就不再做nat表和ip_conntrack处理了,也就是不再做地址转换和连接的跟踪了;
mangle:对指定的包进行更改;
nat:主要用于网络地址转换NAT,可以实现一对一、一对多、多对多等NAT工作,iptables就是使用该表实现共享上网的;
filter:默认的表,用于包过滤

数据流
1.从外部来包,先经PREROUTING链的raw、mangle、nat表中规则的依次处理,通过的话,在判断目的IP,如果是本机,就进入INPUT链,否则进入FORWARD链,处理后进入POSTROUTING链;
2.本机也会产生包,先进入OUTPUT链处理,通过的话进入POSTROUTING链处理;

命令格式
iptables [-t TABLE] -COMMAND   MATCH ACTION

TABLE
raw,mangle,nat,filter;
COMMAND
-P  --policy        <链名>  定义默认策略
-L  --list          <链名>  查看iptables规则列表
-A  --append        <链名>  在规则列表的最后增加1条规则
-I  --insert        <链名>  在指定的位置插入1条规则
-D  --delete        <链名>  从规则列表中删除1条规则
-R  --replace       <链名>  替换规则列表中的某条规则
-F  --flush         <链名>  删除表中所有规则
-Z  --zero          <链名>  将表中数据包计数器和流量计数器归零
-X  --delete-chain  <链名>  删除自定义链
-v  --verbose       <链名>  与-L他命令一起使用显示更多更详细的信息

MATCH:
-i --in-interface    网络接口名>     指定数据包从哪个网络接口进入,
-o --out-interface   网络接口名>     指定数据包从哪个网络接口输出
-p ---proto          协议类型        指定数据包匹配的协议,如TCP、UDP和ICMP等
-s --source          源地址或子网>   指定数据包匹配的源地址
   --sport           源端口号>       指定数据包匹配的源端口号
   --dport           目的端口号>     指定数据包匹配的目的端口号
-m --match           匹配的模块      指定数据包规则所使用的过滤模块

iptables执行规则时,是从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept,reject,log,drop等),决定下一步执行的情况,后续执行一般有三种情况。

  • 一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。
  • 一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行
  • 一种是中止所有规则队列的执行。
-------------- 上面的说法似乎不太对喔,nat优先级比filter高啊,怎么会终端filter队列后,跳到nat队列 ?

ACTION
前面我们说过iptables处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 、MASQUERADE 以外,还多出 LOG、ULOG、DNAT、RETURN、TOS、SNAT、MIRROR、QUEUE、TTL、MARK等。我们只说明其中最常用的动作
REJECT
拦阻该包,并且发送数据包通知对方。返回的数据包有几种选择:ICMP port-unreachable,ICMP echo-reply,TCP reset(这个会要求对方关闭连接)。
进行该处理后,将不在比对其它规则,直接终端过滤程序,比如:
iptables -A  INPUT -p TCP --dport 22 -j REJECT --reject-with ICMP echo-reply
DROP丢弃数据包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序
REDIRECT将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作透明代理 或用来保护web 服务器。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT--to-ports 8081

常用网络命令


常用网络命令

8. tcpdump
用于获取网络上面收发的数据包(当然,必须得经过运行tcpdump的机器)。

参数
-i eth0 // 设置interface
-s 0/65535 / 设置抓取包大小,默认64,0代表都抓取;
-c 100 // 抓取100个包;
-w file // 保存到file
-C file_size // 限制抓取文件大小,单位是M,超过就新建立一个文件;
-e // 在输出行打印数据链路层的头部信息;
-E // 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组 ???
-b // 在数据链路层上面选择协议,ip,arp,ipx都是;
-n // 不把网络地址转换成名字;
-nn // 不进行端口名称转换;
-P // 不将网络接口设置为混杂模式;
-S // 将tcp序号以绝对值形式输出,而不是相对值;


表达式关键字
主要有3类:
- host,net,port
- src,dst,src or dst, src and dst
- ip, tcp, udp, arp等;
- gateway, broadcast, less, greater等, and or not ! 等;


例子:
#tcpdump // 直接启动,获取所有经过第一个interface的所有包;
#tcpdump -i eth0 // 只获取接口eth0的;
// 设置host
#tcpdump host sundown // 只获取进入或者离开sundown的数据包;
#tcpdump host 192.168.156.12 // 只获取进入或者离开这个ip的数据包;
#tcpdump host helios and  hotorace  // 只获取helios与hot或者ace之间的数据包;
#tcpdump host 192.168.156.2 and  192.168.1256.3or192.168.156.4  // 上面例子的ip版本;
#tcpdump host helios and not ace // heliso与任何主机之间的包,但不包括ace;
#tcpdump host 192.168.156.2 and ! 192.168.156.3 // 2与任何主机,但不包括3;
#tcpdump src host helios // 主机helios发送的包;
#tcpdump dst host helios // 目的主机是helios的包;
// 设置port
#tcpdump tcp port 23 and host 192.168.156.2 // 主机2收发,且tcp port是23的包;
#tcpdump -c 100 udp port 80 //只抓取100个包
// 设置网络
// 设置协议
#tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0' // 之获取tcp连接建立和释放的包;

9.ip

10.TC
http://www.ibm.com/developerworks/cn/linux/1412_xiehy_tc/
http://blog.csdn.net/qinyushuang/article/details/46611709
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值