5.1 网络参数设定使用的指令

 
  •  ifconfig 
    • 查询
    • 设定网络卡与 IP 网域等相关参数;
  •  ifup, ifdown
    • 这两个档案是 script,透过更简单的方式来启动网络接口;
  •  route 
    • 查询
    • 设定路由表 (route table)
  •  ip 
    • 复合式的指令, 可以直接修改上述提到的功能;
 
ifconfig
用法:
[root@www ~]# ifconfig {interface} {up|down} <== 观察与启动接口
[root@www ~]# ifconfig interface {options}   <== 设定与修改接口
选项与参数:
interface:网络卡接口代号,包括 eth0, eth1, ppp0 等等
options :可以接的参数,包括如下:
  up, down :启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)
  mtu :可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)
  netmask :就是子屏蔽网络;
  broadcast:就是广播地址啊!
 
范例一:观察所有的网络接口(直接输入 ifconfig)
# 范例一:观察所有的网络接口(直接输入 ifconfig)
[root@www ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.1.100 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe71:85bd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
net.qiang@hotmail.com
RX packets:2555 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:239892 (234.2 KiB) TX bytes:11153 (10.8 KiB)

 

范例二:暂时修改网络接口,给予 eth0 一个 192.168.100.100/24 的参数
# 范例二:暂时修改网络接口,给予 eth0 一个 192.168.100.100/24 的参数
[root@www ~]# ifconfig eth0 192.168.100.100
# 如果不加任何其他参数,则系统会依照该 IP 所在的 class 范围,自动的计算出
# netmask 以及 network, broadcast 等 IP 参数,
#若想改其他参数则:
[root@www ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128  mtu 8000

 

 范例三:一个网络接口多个IP
[root@www ~]# ifconfig eth0:0 192.168.50.50 net.qiang@hotmail.com
# 仔细看那个界面是 eth0:0 喔!那就是在该实体网卡上,再仿真一个网络接口,
# 亦即是在一张网络卡上面设定多个 IP 的意思!

[root@www ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.100.100 Bcast:192.168.100.127
Mask:255.255.255.128
inet6 addr: fe80::a00:27ff:fe71:85bd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
RX packets:2555 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:239892 (234.2 KiB) TX bytes:11153 (10.8 KiB)
eth0:0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.50.50 Bcast:192.168.50.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1

# 仔细看,是否与硬件有关的信息都相同啊!没错!因为是同一张网卡嘛!
# 那如果想要将刚刚建立的那张 eth0:0 关闭就好,不影响原有的 eth0 呢?

[root@www ~]# ifconfig eth0:0 down
# 关掉 eth0:0 这个界面。那如果想用默认值启动 
 
# 范例四:将手动的处理全部取消,使用原有的设定值重建网络参数:
[root@www ~]# /etc/init.d/network restart
 
ifup  ifdown
用法
[root@www ~]# ifup   {interface}
[root@www ~]# ifdown {interface}
[root@www ~]# ifup 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 或 port number;
    • -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.1.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.1.254  0.0.0.0       UG      0          0   0 eth0
  • Destination, Genmask:这两个玩意儿就是分别是 network 与 netmask 啦!所以这两个咚咚就组合成为一个完整的网域!
  • Gateway:该网域是通过哪个 gateway 连接出去的?如果显示 0.0.0.0 表示该路由是直接由本机传送,亦即可以透过局域网络的 MAC 直接传讯;如果有显示 IP 的话,表示该路由需要经过路由器的帮忙才能够传送出去。
  • Flags:总共有多个旗标,代表的意义如下:
    o U (route is up):该路由是启动的;
    o H (target is a host):目标是一部主机 (IP) 而非网域;
    o G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
    o R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
    o D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
    o M (modified from routing daemon or redirect):路由已经被修改了;
    o ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
  • Iface:这个路由传递封包的接口。
 
范例二:路由的增加与删除
# 范例二:路由的增加与删除
[root@www ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
# 上面这个动作可以删除掉 169.254.0.0/16 这个网域!
# 请注意,在删除的时候,需要将路由表上面出现的信息都写入
# 包括 netmask , dev 等等参数!
[root@www
~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0 # 透过 route add 来增加一个路由!请注意,这个路由的设定必须要能够与你的网络互通。 # 举例来说,如果我下达底下的指令就会显示错误: # route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254 # 因为我的主机内仅有 192.168.1.11 这个 IP ,所以不能直接与192.168.200.254 # 这个网段直接使用 MAC 互通!

 

 
范例三:默认路由设定
[root@www ~]# route add default gw 192.168.1.250
# 增加预设路由的方法!请注意,只要有一个预设路由就够了
# 同样的,那个 192.168.1.250 的 IP 也需要能与你的 LAN 沟通才行!
# 在这个地方如果你随便设定后,记得使用底下的指令重新设定你的网络
# /etc/init.d/network restart
注意: 你所规划的路由必须要是你的装置 (如 eth0) 或 IP 可以直接沟通(broadcast) 的情况才行
 
 
网络参数综合指令:ip
基本上是整合了ifconfig与route两个指令;
[root@www ~]# ip [option] [动作] [指令]
选项与参数:
option :设定的参数,主要有:
-s :显示出该装置的统计数据(statistics),例如总接受封包数等;
动作:亦即是可以针对哪些网络参数进行动作,包括有:
link :关于装置 (device) 的相关设定,包括 MTU, MAC 地址等等
addr/address :关于额外的 IP 协议,例如多 IP 的达成等等;
route :与路由有关的相关设定
 
 
关于装置接口 (device) 的相关设定: ip link
ip link 可以设定与装置 (device) 有关的相关参数,包括 MTU 以及该网络接口的 MAC 等等,当然也可以启动 (up) 或关闭 (down) 某个网络接口啦!
 
用法
[root@www ~]# ip [-s] link show   <== 单纯的查阅该装置相关的信息
[root@www ~]# ip link set [device] [动作与参数]
选项与参数:
show:仅显示出这个装置的相关内容,如果加上 -s 会显示更多统计数据;
set :可以开始设定项目, device 指的是 eth0, eth1 等等界面代号;
 
动作与参数:包括有底下的这些动作:
up|down :启动 (up) 或关闭 (down) 某个接口,其他参数使用默认的以太网络;
address :如果这个装置可以更改 MAC 的话,用这个参数修改!
name :给予这个装置一个特殊的名字;
mtu :就是最大传输单元啊!
 
范例一:显示出所有的接口信息
# 范例一:显示出所有的接口信息
[root@www ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 08:00:27:2a:30:14 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
link/sit 0.0.0.0 brd 0.0.0.0

[root@www ~]# ip -s link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
314685 3354 0 0 0 0
TX: bytes packets errors dropped carrier collsns
27200 199 0 0 0 0
 
范例二:启动、关闭与设定装置的相关信息
# 范例二:启动、关闭与设定装置的相关信息
[root@www ~]# ip link set eth0 up
# 启动 eth0 这个装置接口;
[root@www ~]# ip link set eth0 down
# 阿就关闭啊!简单的要命~
[root@www ~]# ip link set eth0 mtu 1000
# 更改 MTU 的值,达到 1000 bytes,单位就是 bytes 啊!
 
范例三:修改网络卡代号、 MAC 等参数
[root@www ~]# ip link set eth0 name vbird
SIOCSIFNAME: Device or resource busy
# 因为该装置目前是启动的,所以不能这样做设定。你应该要这样做:
[root@www ~]# ip link set eth0 down <==关闭界面
[root@www ~]# ip link set eth0 name vbird <==重新设定
[root@www ~]# ip link show <==观察一下
2: vbird: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
# 怕了吧!连网络卡代号都可以改变!不过,玩玩后记得改回来啊!
# 因为我们的 ifcfg-eth0 还是使用原本的装置代号!避免有问题,要改回来
[root@www ~]# ip link set vbird name eth0 <==界面改回来
[root@www ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa
[root@www ~]# ip link show eth0
# 如果你的网络卡支持硬件地址(MAC)可以更改的话,上面这个动作就可以更改
# 你的网络卡地址了!厉害吧!不过,还是那句老话,测试完之后请立刻改回来啊!

 

关于额外的IP相关设定:ip address
如果说 ip link 是与 OSI 七层协定 的第二层资料连阶层有关的话,那么 ipaddress (ip addr) 就是与第三层网络层有关的参数啦!
主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等等
用法
[root@www ~]# ip address show    <==就是查阅 IP 参数啊!
[root@www ~]# ip address [add|del] [IP 参数] [dev 装置名] [相关参数]
选项与参数:
show :   单纯的显示出接口的 IP 信息啊;
add|del :进行相关参数的增加 (add) 或删除 (del) 设定,主要有:
IP 参数:主要就是网域的设定,例如 192.168.100.100/24 之类的设定喔;
dev :这个 IP 参数所要设定的接口,例如 eth0, eth1 等等;
 
相关参数:主要有底下这些:
broadcast:设定广播地址,如果设定值是 + 表示『让系统自动计算』
label :亦即是这个装置的别名,例如 eth0:0 就是了
scope :这个界面的领域,通常是这几个大类:
global :允许来自所有来源的联机;
site :仅支持 IPv6 ,仅允许本主机的联机;
link :仅允许本装置自我联机;
host :仅允许本主机内部的联机;
 
范例一:显示出所有的接口之 IP 参数:
# 范例一:显示出所有的接口之 IP 参数:
[root@www ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe71:85bd/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 08:00:27:2a:30:14 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
link/sit 0.0.0.0 brd 0.0.0.0
 
范例二:新增一个接口,名称假设为 eth0:vbird
[root@www ~]# ip address add 192.168.50.50/24 broadcast + dev eth0 label eth0:vbird
[root@www ~]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird
inet6 fe80::a00:27ff:fe71:85bd/64 scope link
valid_lft forever preferred_lft forever
# 看到上面的特殊字体了吧?多出了一行新的接口,且名称是 eth0:vbird
# 至于那个 broadcast + 也可以写成 broadcast 192.168.50.255 啦!
 
[root@www ~]# ifconfig
eth0:vbird Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.50.50 Bcast:192.168.50.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
# 如果使用 ifconfig 就能够看到这个怪东西了!
 
范例三:将刚刚的界面删除
# 范例三:将刚刚的界面删除
[root@www ~]# ip address del 192.168.50.50/24 dev eth0
# 删除就比较简单啊! 
 
关于路由的相关设定: ip route
ip route 的功能几乎与 route这个指令差不多,但是,他还可以进行额外的参数设计,例如 MTU 的规划等等,相当的强悍啊
用法:
[root@www ~]# ip route show  <==单纯的显示出路由的设定而已
[root@www ~]# ip route [add|del] [IP 或网域] [via gateway] [dev 装置]
选项与参数:
show :   单纯的显示出路由表,也可以使用 list ;
add|del :增加 (add) 或删除 (del) 路由的意思。
IP 或网域:可使用 192.168.50.0/24 之类的网域或者是单纯的 IP ;
via :从那个 gateway 出去,不一定需要;
dev :由那个装置连出去,这就需要了!
mtu :可以额外的设定 MTU 的数值喔!
 
范例一:显示出目前的路由资料
# 范例一:显示出目前的路由资料
[root@www ~]# ip route show
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.1.254 dev eth0

 

范例二:增加路由,主要是本机直接可沟通的网域
[root@www ~]# ip route add 192.168.5.0/24 dev eth0
# 针对本机直接沟通的网域设定好路由,不需要透过外部的路由器
[root@www ~]# ip route show
192.168.5.0/24 dev eth0 scope link
....(以下省略)....
 

 

范例三:增加可以通往外部的路由,需透过 router
# 范例三:增加可以通往外部的路由,需透过 router 喔!
[root@www ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
[root@www ~]# ip route show
192.168.5.0/24 dev eth0 scope link
....(其他省略)....
192.168.10.0/24 via 192.168.5.100 dev eth0
# 仔细看喔,因为我有 192.168.5.0/24 的路由存在 (我的网卡直接联系),
# 所以才可以将 192.168.10.0/24 的路由丢给 192.168.5.100
# 那部主机来帮忙传递喔!与之前提到的 route 指令是一样的限制!

 

范例四:增加预设路由
# 范例四:增加预设路由
[root@www ~]# ip route add default via 192.168.1.254 dev eth0
# 那个 192.168.1.254 就是我的预设路由器 (gateway) 的意思啊! ^_^
# 真的记得,只要一个预设路由就 OK !

 

范例五:删除路由
# 范例五:删除路由
[root@www ~]# ip route del 192.168.10.0/24
[root@www ~]# ip route del 192.168.5.0/24

 

无线网络:iwlist,iwconfig
  •  iwlist:利用无线网卡进行无线 AP 的侦测与取得相关的数据;
  •  iwconfig:设定无线网卡的相关参数。
 
手动使用DHCP自动取得IP参数:dhclient
[root@www ~]# dhclient eth0
 
 
5.2 网络侦测与观察指令

 
两部主机两点沟通: ping
ping 主要透过 ICMP 封包 来进行整个网络的状况报告,当然啦,最重要的就是那个 ICMP type 0, 8 这两个类型,
分别是要求回报与主动回报网络状态是否存在的特性。要特别注意的是, ping 还是需要透过 IP 封包来传送 ICMP 封包的,
而 IP 封包里面有个相当重要的 TTL 属性,这是很重要的一个路由特性;
 
用法
[root@www ~]# ping [选项与参数] IP
选项与参数:
-c 数值:后面接的是执行 ping 的次数,例如 -c 5 ;
-n :在输出数据时不进行 IP 与主机名的反查,直接使用 IP 输出(速度较快);
-s 数值:发送出去的 ICMP 封包大小,预设为 56bytes,不过你可以放大此一数值;
-t 数值: TTL 的数值,预设是 255,每经过一个节点就会少一;
-W 数值:等待响应对方主机的秒数。
-M [do|dont] :主要在侦测网络的 MTU 数值大小,两个常见的项目是:
do :代表传送一个 DF (Don't Fragment) 旗标,让封包不能重新拆包与
打包;
dont:代表不要传送 DF 旗标,表示封包可以在其他主机上拆包
 
范例一:侦测一下 168.95.1.1 这部 DNS 主机是否存在
# 范例一:侦测一下 168.95.1.1 这部 DNS 主机是否存在?
[root@www ~]# ping -c 3 168.95.1.1
PING 168.95.1.1 (168.95.1.1) 56(84) bytes of data.
64 bytes from 168.95.1.1: icmp_seq=1 ttl=245 time=15.4 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=245 time=10.0 ms
64 bytes from 168.95.1.1: icmp_seq=3 ttl=245 time=10.2 ms
--- 168.95.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2047ms
rtt min/avg/max/mdev = 10.056/11.910/15.453/2.506 ms

 

ping 最简单的功能就是传送 ICMP 封包去要求对方主机回应是否存在于网络环境中,上面的响应消息当中,几个重要的项目是这样的:
  • 64 bytes:表示这次传送的 ICMP 封包大小为 64 bytes 这么大,这是默认值, 在某些特殊场合中,例如要搜索整个网络内最大的 MTU 时,可以使用 -s2000 之类的数值来取代;
  • icmp_seq=1: ICMP 所侦测进行的次数,第一次编号为 1
  • ttl=243: TTL 与 IP 封包内的 TTL 是相同的,每经过一个带有 MAC 的节点 (node) 时,例如 router, bridge 时, TTL 就会减少一,预设的 TTL 为255 ,你可以透过 -t 150 之类的方法来重新设定预设 TTL 数值;
  • time=15.4 ms:响应时间,单位有 ms(0.001 秒)及 us(0.000001 秒), 一 般来说,越小的响应时间,表示两部主机之间的网络联机越良好!
 
两主机间各节点分析: 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就是了。
 
范例一:侦测本机到 yahoo 去的各节点联机状态
# 范例一:侦测本机到 yahoo 去的各节点联机状态
[root@www ~]# traceroute -n tw.yahoo.com
traceroute to tw.yahoo.com (119.160.246.241), 30 hops max, 40 byte packets
1 192.168.1.254  0.279 ms 0.156 ms 0.169 ms
2 172.20.168.254 0.430 ms 0.513 ms 0.409 ms
3 10.40.1.1      0.996 ms 0.890 ms 1.042 ms
4 203.72.191.85  0.942 ms 0.969 ms 0.951 ms
5 211.20.206.58  1.360 ms 1.379 ms 1.355 ms
6 203.75.72.90   1.123 ms 0.988 ms 1.086 ms
7 220.128.24.22  11.238 ms 11.179 ms 11.128 ms
8 220.128.1.82   12.456 ms 12.327 ms 12.221 ms
9 220.128.3.149  8.062 ms 8.058 ms 7.990 ms
10 * * *
11 119.160.240.1 10.688 ms 10.590 ms 119.160.240.3 10.047 ms
12 * * * <==可能有防火墙装置等情况发生所致

 

由于目前 UDP/ICMP 的攻击层出不穷,因此很多路由器可能就此取消这两个封包的响应功能。
所以我们可以使用 TCP 来侦测! 例如使用同样的方法,透过等待时间 1秒,以及 TCP 80 埠口的情况下,可以这样做:
[root@www ~]# traceroute -w 1 -n -T tw.yahoo.com
 
 
察看本机的网络联机与后门: netstat
[root@www ~]# netstat -[rn]      <==与路由有关的参数
[root@www ~]# netstat -[antulpc] <==与网络接口有关的参数
选项与参数:
与路由 (route) 有关的参数说明:
-r : 列出路由表(route 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 每五秒更新一次网络状态
的显示;
 
范例一:列出目前的路由表状态,且以 IP 及 port number 显示
# 范例一:列出目前的路由表状态,且以 IP 及 port number 显示:
[root@www ~]# netstat -rn
Kernel IP routing table
Destination   Gateway   Genmask      Flags   MSS   Window   irtt   Iface
192.168.1.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.1.254 0.0.0.0    UG        0      0       0    eth0
# 其实这个参数就跟 route -n 一模一样,对吧!这不是 netstat 的主要功能啦!

 

范例二:列出目前的所有网络联机状态,使用 IP 与 port number
# 范例二:列出目前的所有网络联机状态,使用 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:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.1.100:22 192.168.1.101:1937
ESTABLISHED
tcp 0 0 :::22 :::* LISTEN
....(中间省略)....
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 11075
@/var/run/hald/dbus-uukdg1qMPh
unix 2 [ ACC ] STREAM LISTENING 10952
/var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 11032
/var/run/acpid.socket
....(底下省略)....

 

范例三:秀出目前已经启动的网络服务
#范例三:秀出目前已经启动的网络服务
[root@www ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 0.0.0.0:34796 0.0.0.0:* LISTEN
987/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
969/rpcbind
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
1231/master
tcp 0 0 :::22 :::* LISTEN
1155/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:*
969/rpcbind
....(底下省略)....
# 上面最重要的其实是那个 -l 的参数,因为可以仅列出有在 Listen 的port

 

范例四:观察本机上头所有的网络联机状态
#范例四:观察本机上头所有的网络联机状态
[root@www ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
969/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
1155/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
1231/master
tcp 0 52 192.168.1.100:22 192.168.1.101:1937
 
侦测主机名与 IP 对应: host
[root@www ~]# host [-a] hostname [server]
选项与参数:
-a :列出该主机详细的各项主机名设定数据
[server] :可以使用非为 /etc/resolv.conf 的 DNS 服务器 IP 来查询
 
范例一:列出 tw.yahoo.com 的 IP
[root@www ~]# host tw.yahoo.com
tw.yahoo.com is an alias for tw-cidr.fyap.b.yahoo.com.
tw-cidr.fyap.b.yahoo.com is an alias for tw-tpe-fo.fyap.b.yahoo.com.
tw-tpe-fo.fyap.b.yahoo.com has address 119.160.246.241
 
IP 是 119.160.246.241 啊!很简单就可以查询到 IP 了!那么这个 IP 是向谁查询的呢?
其实就是写在 /etc/resolv.conf 那个档案内的 DNS 服务器 IP 啦!如果不想要使用该档案内的主机来查询,也可以这样做: [root@www ~]# host tw.yahoo.com 168.95.1.1 Using domain server: Name: 168.95.1.1 Address: 168.95.1.1#53 Aliases: tw.yahoo.com is an alias for tw-cidr.fyap.b.yahoo.com. tw-cidr.fyap.b.yahoo.com is an alias for tw-tpe-fo.fyap.b.yahoo.com. tw-tpe-fo.fyap.b.yahoo.com has address 119.160.246.241
 
5.3  远程联机指令与实时通讯软件

 
5.3.1 终端机与BBS联机:
telnet 是早期我们在个人计算机上面要链接到服务器工作时,最重要的一个软件了!他不但可以直接连接到服务器上头, 还可以用来连结 BBS !非常棒!不过,telnet 本身的数据在传送的时候是使用明码 (原始的数据,没有加密) , 所以数据在Internet 上面跑的时候,会比较危险一点 (就怕被别人监听啊)。
 
[root@www ~]# telnet [host|IP [port]]
# 范例一:连结到台湾相当热门的 PTT BBS 站 ptt.cc
[root@www ~]# yum install telnet <==默认没有安装这软件
[root@www ~]# telnet ptt.cc
欢迎来到 批踢踢实业坊 目前有【 100118】名使用者与您一同对抗炎炎夏日。
请输入代号,或以 guest 参观,或以 new 注册:
[高手召集令] 台湾黑客年会 暑假与你骇翻南港
http://reg.hitcon.org/hit2011
要学计算机,首选台湾大学信息训练班! http://tinyurl.com/3z42apw
 
我们可以透过 telnet 轻易的连结到 BBS 上面,而如果你的主机有开启telnet 服务器服务的话,
同样的利用『 telnet IP 』并且输入账号与密码之后,就能够登入主机了。

 

 
范例二:侦测本机端的 110 这个 port 是否正确启动
#范例二:侦测本机端的 110 这个 port 是否正确启动?
[root@www ~]# telnet localhost 110
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.centos.vbird ESMTP Postfix ehlo localhost 250-www.centos.vbird 250-PIPELINING 250-SIZE 10240000 ....(中间省略).... 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.

 

5.3.2 FTP 
用法
[root@www ~]# ftp [host|IP] [port]
 
# 范例一:联机到昆山科大去看看
[root@www ~]# yum install ftp
[root@www ~]# ftp ftp.ksu.edu.tw
Connected to ftp.ksu.edu.tw (120.114.150.21).
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 16:25. Server port: 21.
220-Only anonymous FTP is allowed here <==讯息要看啊!这个 FTP 仅支援匿名
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 5 minutes of inactivity.
Name (ftp.ksu.edu.tw:root): anonymous <==鸟哥这里用匿名登录!
230 Anonymous user logged in <==嗯!确实是匿名登录了!
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <==最终登入的结果看起来是这样!
ftp> help <==提供需要的指令说明,可以常参考!
ftp> dir <==显示远程服务器的目录内容 (文件名列表)
ftp> cd /pub <==变换目录到 /pub 当中
ftp> get filename <==下载单一档案,档名为 filename
ftp> mget filename* <==下载多个档案,可使用通配符 *
ftp> put filename <==上传 filename 这个档案到服务器上
ftp> delete file <==删除主机上的 file 这个档案
net.qiang@hotmail.com
ftp> mkdir dir <==建立 dir 这个目录
ftp> lcd /home <==切换『本地端主机』的工作目录
ftp> passive <==启动或关闭 passive 模式
ftp> binary <==数据传输模式设定为 binary 格式
ftp> bye <==结束 ftp 软件的使用

 

5.4 文字接口网页浏览

 
文字浏览器:links
使用vim去查阅本地的一些HTML文件,会看到一堆HTML语法,这样十分不方便,有碍阅读;
links,查看HTML文件,很友好;
 
 用法
[root@www ~]# links [options] [URL]
选项与参数:
-anonymous [0|1]:是否使用匿名登录的意思;
-dump [0|1] :是否将网页的数据直接输出到 standard out 而非 links软件功能
-dump_charset :后面接想要透过 dump 输出到屏幕的语系编码, big5 使用 cp950 
 
范例一:浏览 Linux kernel 网站
# 范例一:浏览 Linux kernel 网站
[root@www ~]# links http://www.kernel.org
  •  进入画面之后,由于是文字型态,所以编排可能会有点位移!不过不打紧!不会影响我们看!
  •  这个时候可以使用『上下键』来让光标在上面的选项当中(如信箱、书签等等的),按下 Enter 就进入该页面
  •  可以使用『左右键』来移动『上一页或下一页』
  •  一些常见功能按键:
    •  h: history ,曾经浏览过的 URL 就显示到画面中
    •  g: Goto URL,按 g 后输入网页地址(URL) 如 :http://www.abc.edu/等
    •  d: download,将该链接数据下载到本机成为档案;
    •  q: Quit,离开 links 这个软件;
    •  o: Option,进入功能参数的设定值修改中,最终写入~/.elinks/elinks.conf 中
  •  Ctrl+C :强迫切断 links 的执行。
  •  箭头键:
    •  上 :移动光标至本页中 "上一个可连结点" .
    •  下 :移动光标至本页中 "下一个可连结点" .
    •  左 : back. 跳回上一页.
    •  右 :进入反白光标所链接之网页.
 
范例二:透过 links 将 tw.yahoo.com 的网页内容整个抓下来储存
透过 links 将 tw.yahoo.com 的网页内容整个抓下来储存
[root@www ~]# links -dump http://tw.yahoo.com > yahoo.html

 

文字接口下载器:wget
如果说 links 是在进行网页的『浏览』,那么 wget 就是在进行『网页数据的取得』。
使用浏览器下载就利用wget;
用法:
[root@www ~]# wget [option] [网址]
选项与参数:
若想要联机的网站有提供账号与密码的保护时,可以利用这两个参数来输入喔!
--http-user=usrname
--http-password=password
--quiet :不要显示 wget 在抓取数据时候的显示讯息
更多的参数请自行参考 man wget 吧!
 
 
5.5 封包撷取功能

分析封包的流向
 
文字接口封包截取器:tcpdump
tcpdump不但可以分析封包的流向,连封包的内容也可以进行『监听』,
如果你使用的传输数据是明码的话,不得了,在 router 或 hub 上面就可能被人家监听走了;
 
用法
[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 :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接
档名
-r :从后面接的档案将封包数据读出来。那个『档案』是已经存在的档案,并且这个『档案』是由 -w 所制作出来的。
-c :监听的封包数,如果没有这个参数, tcpdump 会持续不断的监听,直到使用者输入 [ctrl]-c 为止。
 
所欲撷取的封包数据格式:
我们可以专门针对某些通讯协议或者是 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 等
还可以利用 and 与 or 来进行封包数据的整合显示呢!
 
范例一:以 IP 与 port number 捉下 eth0 这个网络卡上的封包
# 范例一:以 IP 与 port number 捉下 eth0 这个网络卡上的封包,持续 3秒
[root@www ~]# tcpdump -i eth0 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:01:47.360523 IP 192.168.1.101.1937 > 192.168.1.100.22: Flags [.], ack 196, win 65219,
17:01:47.362139 IP 192.168.1.100.22 > 192.168.1.101.1937: Flags [P.], seq 196:472, ack 1,
17:01:47.363201 IP 192.168.1.100.22 > 192.168.1.101.1937: Flags [P.], seq 472:636, ack 1,
17:01:47.363328 IP 192.168.1.101.1937 > 192.168.1.100.22: Flags [.], ack 636, win 64779,
<==按下 [ctrl]-c 之后结束
6680 packets captured <==捉下来的封包数量
14250 packets received by filter <==由过滤所得的总封包数量
7512 packets dropped by kernel <==被核心所丢弃的封包
  • 17:01:47.362139:这个是此封包被撷取的时间,『时:分:秒』的单位;
  • IP:透过的通讯协议是 IP ;
  • 192.168.1.100.22 > :传送端是 192.168.1.100 这个 IP,而传送的 portnumber 为 22,你必须要了解的是,那个大于 (>) 的符号指的是封包的传输方向!
  • 192.168.1.101.1937:接收端的 IP 是 192.168.1.101, 且该主机开启port 1937 来接收;
  • [P.], seq 196:472:这个封包带有 PUSH 的数据传输标志, 且传输的数据为整体数据的 196~472 byte;
  • ack 1: ACK 的相关资料。
简单来说就是该封包是由 192.168.1.100 传到 192.168.1.101,透过的port 是由 22 到 1937 , 使用的是 PUSH 的旗标,而不是 SYN 之类的主动联机标志。标志可以到 TCP 表头资料的部分去瞧一瞧的
 
上面例子中仅针对eth0做监控,所以整个eth0接口上面的数据都会被显示到屏幕上,不好分析;
那么只取出port 21 的联机封包,可以这样做
 
范例二:捉下 eth0 这个网络卡上端口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 96 bytes
01:54:37.96 IP 192.168.1.101.1240 > 192.168.1.100.21: . ack 1 win 65535
01:54:37.96 IP 192.168.1.100.21 > 192.168.1.101.1240: P 1:21(20) ack
1 win 5840
01:54:38.12 IP 192.168.1.101.1240 > 192.168.1.100.21: . ack 21 win
65515
01:54:42.79 IP 192.168.1.101.1240 > 192.168.1.100.21: P 1:17(16) ack
21 win 65515
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.101.1240: . ack 17 win 5840
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.101.1240: P 21:55(34) ack
17 win 5840

 

范例三:如何使用 tcpdump 监听 (1)来自 eth0 适配卡且 (2)通讯协议为 port22 , (3)封包来源为 192.168.1.101 的封包资料
tcpdump -i eth0 -nn 'port 22 and src host 192.168.1.101'

 

 
posted on 2016-10-12 11:51  Aiapple  阅读(1163)  评论(0编辑  收藏  举报