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 (单位为 byte)
  netmask :就是子屏蔽网络;
  broadcast:就是广播地址啊!
 
范例一:观察所有的网络接口(直接输入 ifconfig)
# 范例一:观察所有的网络接口(直接输入 ifconfig)
[root@www ~]# ifconfig
eth0 Link encap:Ethernet HWaddr :::::BD
inet addr:192.168.1.100 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe71:85bd/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
net.qiang@hotmail.com
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (234.2 KiB) TX bytes: (10.8 KiB)
范例二:暂时修改网络接口,给予 eth0 一个 192.168.100.100/24 的参数
# 范例二:暂时修改网络接口,给予 eth0 一个 192.168.100.100/ 的参数
[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
 范例三:一个网络接口多个IP
[root@www ~]# ifconfig eth0: 192.168.50.50 net.qiang@hotmail.com
# 仔细看那个界面是 eth0: 喔!那就是在该实体网卡上,再仿真一个网络接口,
# 亦即是在一张网络卡上面设定多个 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 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
0.0.0.0 192.168.1.254 0.0.0.0 UG 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/ 这个网域!
# 请注意,在删除的时候,需要将路由表上面出现的信息都写入
# 包括 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.
# 这个网段直接使用 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
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
link/loopback ::::: brd :::::
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :::::bd brd ff:ff:ff:ff:ff:ff
: eth1: <BROADCAST,MULTICAST> mtu qdisc noop state DOWN qlen
link/ether :::2a:: brd ff:ff:ff:ff:ff:ff
: sit0: <NOARP> mtu 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
# 更改 MTU 的值,达到 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 <==观察一下
: vbird: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :::::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
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :::::bd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/ brd 192.168.1.255 scope global eth0
inet6 fe80::a00:27ff:fe71:85bd/ scope link
valid_lft forever preferred_lft forever
: eth1: <BROADCAST,MULTICAST> mtu qdisc noop state DOWN qlen
link/ether :::2a:: brd ff:ff:ff:ff:ff:ff
: sit0: <NOARP> mtu 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/ broadcast + dev eth0 label eth0:vbird
[root@www ~]# ip address show eth0
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :::::bd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/ brd 192.168.1.255 scope global eth0
inet 192.168.50.50/ brd 192.168.50.255 scope global eth0:vbird
inet6 fe80::a00:27ff:fe71:85bd/ 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 :::::BD
inet addr:192.168.50.50 Bcast:192.168.50.255
Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU: Metric:
# 如果使用 ifconfig 就能够看到这个怪东西了!
 
范例三:将刚刚的界面删除
# 范例三:将刚刚的界面删除
[root@www ~]# ip address del 192.168.50.50/ 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/ dev eth0 proto kernel scope link src 192.168.1.100
169.254.0.0/ dev eth0 scope link metric
default via 192.168.1.254 dev eth0
范例二:增加路由,主要是本机直接可沟通的网域
[root@www ~]# ip route add 192.168.5.0/ dev eth0
# 针对本机直接沟通的网域设定好路由,不需要透过外部的路由器
[root@www ~]# ip route show
192.168.5.0/ dev eth0 scope link
....(以下省略)....
范例三:增加可以通往外部的路由,需透过 router
# 范例三:增加可以通往外部的路由,需透过 router 喔!
[root@www ~]# ip route add 192.168.10.0/ via 192.168.5.100 dev eth0
[root@www ~]# ip route show
192.168.5.0/ dev eth0 scope link
....(其他省略)....
192.168.10.0/ via 192.168.5.100 dev eth0
# 仔细看喔,因为我有 192.168.5.0/ 的路由存在 (我的网卡直接联系),
# 所以才可以将 192.168.10.0/ 的路由丢给 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/
[root@www ~]# ip route del 192.168.5.0/
无线网络: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 168.95.1.1
PING 168.95.1.1 (168.95.1.1) () bytes of data.
bytes from 168.95.1.1: icmp_seq= ttl= time=15.4 ms
bytes from 168.95.1.1: icmp_seq= ttl= time=10.0 ms
bytes from 168.95.1.1: icmp_seq= ttl= time=10.2 ms
--- 168.95.1.1 ping statistics ---
packets transmitted, received, % 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), hops max, byte packets
192.168.1.254 0.279 ms 0.156 ms 0.169 ms
172.20.168.254 0.430 ms 0.513 ms 0.409 ms
10.40.1.1 0.996 ms 0.890 ms 1.042 ms
203.72.191.85 0.942 ms 0.969 ms 0.951 ms
211.20.206.58 1.360 ms 1.379 ms 1.355 ms
203.75.72.90 1.123 ms 0.988 ms 1.086 ms
220.128.24.22 11.238 ms 11.179 ms 11.128 ms
220.128.1.82 12.456 ms 12.327 ms 12.221 ms
220.128.3.149 8.062 ms 8.058 ms 7.990 ms
* * *
119.160.240.1 10.688 ms 10.590 ms 119.160.240.3 10.047 ms
* * * <==可能有防火墙装置等情况发生所致
由于目前 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 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
0.0.0.0 192.168.1.254 0.0.0.0 UG 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 127.0.0.1: 0.0.0.0:* LISTEN
tcp 192.168.1.100: 192.168.1.101:
ESTABLISHED
tcp ::: :::* LISTEN
....(中间省略)....
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix [ ACC ] STREAM LISTENING
@/var/run/hald/dbus-uukdg1qMPh
unix [ ACC ] STREAM LISTENING
/var/run/dbus/system_bus_socket
unix [ ACC ] STREAM LISTENING
/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.0.0:* LISTEN
/rpc.statd
tcp 0.0.0.0: 0.0.0.0:* LISTEN
/rpcbind
tcp 127.0.0.1: 0.0.0.0:* LISTEN
/master
tcp ::: :::* LISTEN
/sshd
udp 0.0.0.0: 0.0.0.0:*
/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.0.0:* LISTEN
/rpcbind
tcp 0.0.0.0: 0.0.0.0:* LISTEN
/sshd
tcp 127.0.0.1: 0.0.0.0:* LISTEN
/master
tcp 192.168.1.100: 192.168.1.101:
 
侦测主机名与 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#
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
欢迎来到 批踢踢实业坊 目前有【 】名使用者与您一同对抗炎炎夏日。
请输入代号,或以 guest 参观,或以 new 注册:
[高手召集令] 台湾黑客年会 暑假与你骇翻南港
http://reg.hitcon.org/hit2011
要学计算机,首选台湾大学信息训练班! http://tinyurl.com/3z42apw 我们可以透过 telnet 轻易的连结到 BBS 上面,而如果你的主机有开启telnet 服务器服务的话,
同样的利用『 telnet IP 』并且输入账号与密码之后,就能够登入主机了。
 
范例二:侦测本机端的 110 这个 port 是否正确启动
#范例二:侦测本机端的  这个 port 是否正确启动?
[root@www ~]# telnet localhost
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# 如果出现这样的讯息,代表这个 port 没有启动或者是这个联机有问题,
# 因为你看到那个 refused
[root@www ~]# telnet localhost
Trying ::...
Connected to localhost.
Escape character is '^]'.
www.centos.vbird ESMTP Postfix
ehlo localhost
-www.centos.vbird
-PIPELINING
-SIZE
....(中间省略)....
DSN
quit
2.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).
---------- Welcome to Pure-FTPd [privsep] ----------
-You are user number of allowed.
-Local time is now :. Server port: .
-Only anonymous FTP is allowed here <==讯息要看啊!这个 FTP 仅支援匿名
-IPv6 connections are also welcome on this server.
You will be disconnected after minutes of inactivity.
Name (ftp.ksu.edu.tw:root): anonymous <==鸟哥这里用匿名登录!
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 bytes
::47.360523 IP 192.168.1.101. > 192.168.1.100.: Flags [.], ack , win ,
::47.362139 IP 192.168.1.100. > 192.168.1.101.: Flags [P.], seq :, ack ,
::47.363201 IP 192.168.1.100. > 192.168.1.101.: Flags [P.], seq :, ack ,
::47.363328 IP 192.168.1.101. > 192.168.1.100.: Flags [.], ack , win ,
<==按下 [ctrl]-c 之后结束
packets captured <==捉下来的封包数量
packets received by filter <==由过滤所得的总封包数量
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
tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode
listening on eth0, link-type EN10MB (Ethernet), capture size bytes
::37.96 IP 192.168.1.101. > 192.168.1.100.: . ack win
::37.96 IP 192.168.1.100. > 192.168.1.101.: P :() ack
win
::38.12 IP 192.168.1.101. > 192.168.1.100.: . ack win ::42.79 IP 192.168.1.101. > 192.168.1.100.: P :() ack
win
::42.79 IP 192.168.1.100. > 192.168.1.101.: . ack win
::42.79 IP 192.168.1.100. > 192.168.1.101.: P :() ack
win
范例三:如何使用 tcpdump 监听 (1)来自 eth0 适配卡且 (2)通讯协议为 port22 , (3)封包来源为 192.168.1.101 的封包资料
tcpdump -i eth0 -nn 'port 22 and src host 192.168.1.101'
 

Linux网络常用指令的更多相关文章

  1. (转)Linux最常用指令及快捷键 Linux学习笔记

    Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...

  2. Linux文件常用指令

    目录 Linux文件常用指令 1.pwd 显示当前目录 2.cd 切换目录 3.mkdir 创建目录 4.touch 修改或创建文件 5.ls 显示目录下的内容 6.cat 查看文件信息 7.echo ...

  3. Linux 任务管理 && 常用指令

    A.linux死机 转自:https://www.deleak.com/blog/2010/10/20/sysrq/ linux死机了怎么办? 曾经啊,对着键盘上 Print Screen/SysRq ...

  4. Linux - 网络相关指令

    系统时间与开关机 查看系统时间 date 查看硬件日期 hwclock 学习Linux不必全部指令都会,只要记住主要常用的几个就可以了.--MK 关机命令 shutdown init reboot p ...

  5. linux的常用指令和配置文件

    一. 常用的指令 mkdir -p 创建文件夹 parents递归创建 ls -alh 查看当前目录内容 cd   切换工作目录 pwd 打印当前工作目录 touch 文件名 创建文件 echo 字符 ...

  6. 100个linux系统常用指令

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件 ...

  7. Linux网络常用头文件说明

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...

  8. Linux 日常常用指令

    最近搞了一个阿里ECS,CentOS7,涉及到一些基本的Linux指令,在这里总结一下,在搭环境中常用的一些指令,熟悉这些指令就基本能够使用CentOS进行日常操作了. 更多的可以参考系统自带的  “ ...

  9. 【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件

    1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...

随机推荐

  1. React Native组件之Switch和Picker和Slide

    React Native组件Switch类似于iOS中的UISwitch:组件Slide类似于iOS中UIslider,组件Picker类似于iOS的UIPickerView.他们的使用方法和相关属性 ...

  2. join()、implode()函数

    join() 函数 join() 函数把数组元素组合为一个字符串. join() 函数是 implode() 函数的别名. 语法 join(separator,array) 参数 描述 separat ...

  3. php通用安装程序,导入数据文件(.sql)的安装程序

    php通用安装程序,导入数据文件(.sql)的安装程序 该程序只需要1个php文件 和 1个数据文件,很方便调用.install/index.php         程序文件install/mycms ...

  4. java项目部署在服务器环境配置以及命令的编写

    在往项目上部署java项目(即打成的jar包),要为相应的项目配置环境变量,即项目运行所需要的jar或其他第三方的jar包,java -cp derivativeAccording.jar:lib/c ...

  5. Java实验一

    20145113 Java实验一 使用JDK编译.运行简单的Java程序 安装JDK并配置相关环境 安装JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量 新建 JAVA_HOME 变量 ...

  6. 图片加载完后执行js

    <script>            window.onload=function(){                          var liwidth = $('.imgul ...

  7. php部分---注册审核

    用户界面: 1.登录界面,用户填写相关信息 <form action="dengluchuli.php" method="post"> <di ...

  8. Python 面向对象(初级篇) (转)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面 ...

  9. 关于 MAXScript 拷贝文件夹及内容到其他位置

    之前用 hiddenDOSCommand 本机测试通过,但是换其他电脑有时会不能用... fn xcopy oldfile newfile = ( newfilepath = newfile + &q ...

  10. boot loader:grub入门[转]

    Boot Loader: Grub 在看完了前面的整个启动流程,以及核心模块的整理之后,你应该会发现到一件事情, 那就是『 boot loader 是加载核心的重要工具』啊!没有 boot loade ...