linux运维-基本网络学习

一、网卡是否被发现

1、观察核心所捉到的网卡信息

[root@localhost ~]# dmesg | grep -in eth
 377:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
 383:e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
 418:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
 419:eth0: no IPv6 routers present
[root@localhost ~]# 

从上面的第 377 及 383 这两行,我们可以查到这部主机的两张网络卡都使用模
块为 e1000,而使用的芯片应该就是 Intel 的网络卡了。此外,这个网卡的速
度可达到 1000Mbps 的全双工模式哩 (418 行)。

2、lspci 来查询相关的设备芯片数据

[root@localhost ~]# lspci | grep -i ethernet
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
[root@localhost ~]# 

3、观察网络卡的模块

[root@localhost ~]#  lsmod | grep 1000
e1000                 137624  0   <==确实有载入到核心中!
[root@localhost ~]# 
[root@localhost ~]#  modinfo e1000
 filename: /lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
 version: 7.3.21-k6-NAPI
 license: GPL
 description: Intel(R) PRO/1000 Network Driver
 .....(以下省略).....

上面输出信息的重点在于那个档名 (filename) 的部分!那一场串的文件名目录,就是我们驱动程序放置的主要目录所在。 得要注意的是,那个2.6.32-71.29.1.el6.x86_64 是核心版本,因此,不同的核心版本使用的驱动程序其实不一样的。

二、网络相关配置

1、基本的配置文件位置

所需网络参数主要配置文件档名重要参数
IP、Netmask、DHCP 与否、Gateway 等/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=网卡的代号、BOOTPROTO=是否使用、dhcp、HWADDR=是否加入网卡卡号(MAC)、IPADDR=就是 IP 地址、NETMASK=子网掩码、ONBOOT=要不要默认启动此接口、GATEWAY=就是通讯闸
主机名/etc/hostname你的主机名
DNS IP/etc/resolv.confnameserver DNS 的 IP
私有 IP 对应的主机名/etc/hosts私有 IP 主机名 别名
  • /etc/services:这个档案则是记录架构在 TCP/IP 上面的总总协议,包括 http, ftp, ssh,
    telnet 等等服务所定义的 port number ,都是这个档案所规划出来的。如果你
    想要自定义一个新的协议与 port 的对应,就得要改这个档案了;
  • /etc/protocols:这个档案则是在定义出 IP 封包协议的相关数据,包括 ICMP/TCP/UDP 这方面的
    封包协议的定义等。

2、对网卡手动设置IP

[root@localhost ~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE="eth0"                <==网络卡代号,必须要 ifcfg-eth0 相对应
 HWADDR="08:00:27:71:85:BD"   <==就是网络卡地址,若只有一张网卡,可省略此项目
 NM_CONTROLLED="no"           <==不要受到其他软件的网络管理!
 ONBOOT="yes"                 <==是否默认启动此接口的意思
 BOOTPROTO=none               <==取得 IP 的方式,其实关键词只有 dhcp,手动可输入 none
 IPADDR=192.168.1.100         <==就是 IP 啊
 NETMASK=255.255.255.0        <==就是子网掩码
 GATEWAY=192.168.1.254        <==就是预设路由
 # 重点是上面这几个设定项目,底下的则可以省略的啰!
 NETWORK=192.168.1.0          <==就是该网段的第一个 IP,可省略
 BROADCAST=192.168.1.255      <==就是广播地址啰,可省略
 MTU=1500                     <==就是最大传输单元的设定值,若不更改则可省略

[root@localhost ~]# systemctl restart network      <==重启网卡
  • DEVICE:设备名称,需要与文件名 (ifcfg-eth0) 相同才行!否则可能会造成一些装置名称找不到的困扰。
  • BOOTPROTO:dhcp:表示以DHCP的方式自动获取IP,static或者none:表示手动设置IP
  • GATEWAY:网关,也就是当你有 ifcfg-eth0, ifcfg-eth1… 等多个档案,只要在其中一个档案设定 GATEWAY 即可。
  • HWADDR:mac地址。在仅有一张网卡的情况下,这个设定值没有啥功能, 可以忽略他。但如果你的主机上面有两张一模一样的网卡,使用的模块是相同的。此时,你的 Linux 很可能会将 eth0, eth1 搞混,而造成你网络设定的困扰。如何解决呢? 由于 MAC 是直接写在网卡上的,因此指定 HWADDR 到这个配置文件中,就可以解决网卡对应代号的问题了!很方便吧!

3、DNS 服务器的 IP 设定与观察

[root@localhost ~]#  vim /etc/resolv.conf
 nameserver 168.95.1.1
 nameserver 139.175.10.20

检查看看 DNS 是否顺利运作了

[root@localhost ~]#  dig www.google.com
 ....(前面省略)....
 ;; QUESTION SECTION:
 ;www.google.com. IN A
 
 ;; ANSWER SECTION:
 www.google.com. 428539 IN CNAME www.l.google.com.
 www.l.google.com. 122 IN A 74.125.71.106
 ....(中间省略)....
 
 ;; Query time: 30 msec
 ;; SERVER: 168.95.1.1#53(168.95.1.1) <==这里的项目也很重要!
 ;; WHEN: Mon Jul 18 01:26:50 2011
 ;; MSG SIZE rcvd: 284

4、主机名的修改、启动与观察

临时修改主机名:

[root@localhost ~]#  hostnamectl set-hostname  jiaofan

2、永久修改主机名

修改主机名就得要改 /etc/hostname 以及 /etc/hosts 这两个档案。

[root@localhost ~]# vi /etc/hostname 
jiaofan        <==把之前的名称删除,写入新的主机名

[root@localhost ~]# vi /etc/hosts
jiaofan www.jiaofan.com      <==ip和域名的对应关系,如果没写,可以不改这个文件

[root@localhost ~]#  hostnamectl set-hostname  jiaofan    <==新的主机名需要重启生效,所以可以在用临时更改主机名改一下。

3、自动获取ip

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE=eth0
 HWADDR="08:00:27:71:85:BD"
 NM_CONTROLLED="no"
 ONBOOT=yes
 BOOTPROTO=dhcp

[root@localhost ~]# systemctl restart network      <==重启网卡

注:其他选项可以不要,网关一点要删除,避免不必要的麻烦

4、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:就是广播地址啊!

1)观察所有的网络接口(直接输入 ifconfig)

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.91.159  netmask 255.255.255.0  broadcast 192.168.91.255
        inet6 fe80::c967:bc66:c9a1:d205  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:44:f0:73  txqueuelen 1000  (Ethernet)
        RX packets 31661  bytes 37221979 (35.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7535  bytes 1448741 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 37  bytes 2573 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37  bytes 2573 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • ens33:就是网络卡的代号,也有 lo 这个 loopback ;
  • MTU:最大存储单元
  • RX:那一行代表的是网络由启动到目前为止的封包接收情况, packets 代表封包数、errors 代表封包发生错误的数量、 dropped 代表封包由于有问题而遭丢弃的数量等等
  • TX:与 RX 相反,为网络由启动到目前为止的传送情况;
  • collisions:代表封包碰撞的情况,如果发生太多次, 表示你的网络状况不太好;
  • txqueuelen:代表用来传输数据的缓冲区的储存长度;
  • RX bytes, TX bytes:总接收、发送字节总量

2)暂时修改网络接口,给予 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
 # 设定不同参数的网络接口,同时设定 MTU 的数值!
 
 [root@www ~]# ifconfig eth0 mtu 9000
 # 仅修改该接口的 MTU 数值,其他的保持不动!
 
 [root@www ~]# ifconfig eth0:0 192.168.50.50
  # 仔细看那个界面是 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 这个界面。那如果想用默认值启动 eth1:『ifconfig eth1 up』即可达成

5、ifup, ifdown使用

[root@www ~]# ifup {interface}
[root@www ~]# ifdown {interface}
 
[root@www ~]# ifup eth0
[root@www ~]# ifdown eth0
 

6、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 等

1)单纯的观察路由状态

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.91.2    0.0.0.0         UG    100    0        0 ens33
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

[root@localhost ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.91.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33

由上面的例子当中仔细观察 route 与 route -n 的输出结果,你可以发现有加 -n 参
数的主要是显示出 IP ,至于使用 route 而已的话,显示的则是『主机名』喔!也就
是说,在预设的情况下, route 会去找出该 IP 的主机名,如果找不到呢? 就会显示
的钝钝的(有点小慢)。

  • Flags:总共有多个旗标,代表的意义如下:
    • U (route is up):该路由是启动的;
    • H (target is a host):目标是一部主机 (IP) 而非网域;
    • G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
    • R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
    • D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
    • M (modified from routing daemon or redirect):路由已经被修改了;

2)路由的增加与删除

[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

7、网络参数综合指令: ip

[root@www ~]# ip [option] [动作] [指令]
 选项与参数:
   option :设定的参数,主要有:
   -s :显示出该装置的统计数据(statistics),例如总接受封包数等;
   动作:亦即是可以针对哪些网络参数进行动作,包括有:
   link :关于装置 (device) 的相关设定,包括 MTU, MAC 地址等等
   addr/address :关于额外的 IP 协议,例如多 IP 的达成等等;
   route :与路由有关的相关设定

关于装置接口 (device) 的相关设定: ip link

[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 :就是最大传输单元啊!

1)显示出所有的接口信息

[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

2)启动、关闭与设定装置的相关信息

 [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 啊!

3)修改网络卡代号、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 七层协定 的第二层资料连阶层有关的话,那么 ip
address (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 :仅允许本主机内部的联机;
    所以当然是使用 global 啰!预设也是 global 啦!

1)显示出所有的接口之 IP 参数

[root@localhost ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:f0:73 brd ff:ff:ff:ff:ff:ff
    inet 192.168.91.159/24 brd 192.168.91.255 scope global noprefixroute dynamic ens33
       valid_lft 5179234sec preferred_lft 5179234sec
    inet6 fe80::c967:bc66:c9a1:d205/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

2)新增一个接口,名称假设为 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 就能够看到这个怪东西了!

3)将刚刚的界面删除

[root@www ~]# ip address del 192.168.50.50/24 dev eth0

关于路由的相关设定: ip route

[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 的数值喔!

1)显示出目前的路由资料

 [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

2)增加路由,主要是本机直接可沟通的网域

[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
 ....(以下省略)....

3)增加可以通往外部的路由,需透过 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 指令是一样的限制!

4)增加预设路由

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

5)删除路由

[root@www ~]# ip route del 192.168.10.0/24
[root@www ~]# ip route del 192.168.5.0/24

8、 两部主机两点沟通: ping

[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 旗标,表示封包可以在其他主机上拆包与打包

1)侦测一下 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

2)用 ping 追踪路径中的最大 MTU 数值(最大传输单位)

 [root@www ~]# ping -c 2 -s 1000 -M do 192.168.1.254
 PING 192.168.1.254 (192.168.1.254) 1000(1028) bytes of data.
 1008 bytes from 192.168.1.254: icmp_seq=1 ttl=64 time=0.311 ms
 # 如果有响应,那就是可以接受这个封包,如果无响应,那就表示这个 MTU 太大了。
 
 [root@www ~]# ping -c 2 -s 8000 -M do 192.168.1.254
 PING 192.168.1.254 (192.168.1.254) 8000(8028) bytes of data.
 From 192.168.1.100 icmp_seq=1 Frag needed and DF set (mtu = 1500)
 # 这个错误讯息是说,本地端的 MTU 才到 1500 而已,你要侦测 8000 的 MTU
 # 根本就是无法达成的!那要如何是好?用前一小节介绍的 ip link 来进行MTU 设定吧。

9、 两主机间各节点分析: traceroute

[root@www ~]# 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 就是了。

1)侦测本机到 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 * * * <==可能有防火墙装置等情况发生所致

这个 traceroute 挺有意思的,这个指令会针对欲连接的目的地之所有 node 进行 UDP 的逾时等待, 例如上面的例子当中,主机连接到 Yahoo 时,他会经过 12 个点以上,traceroute 会主动的对这 12 个节点做 UDP 的回声等待,并侦测回复的时间,每节点侦测三次,最终回传像上头显示的结果。 你可以发现每个节点其实回复的时间大约在 50 ms 以内,算是还可以的 Internet 环境了。

比较特殊的算是第 10/12 个,会回传星号的,代表该 node 可能设有某些防护措施,让我们发送的封包信息被丢弃所致。 因为我们是直接透过路由器转递封包,并没有进入路由器去取得路由器的使用资源,所以某些路由器仅支持封包转递, 并不会接受来自客户端的各项侦测啦!此时就会出现上述的问题。因为 traceroute 预设使用UDP 封包,如果你想尝试使用其他封包, 那么 -I 或 -T 可以试看看啰!

由于目前 UDP/ICMP 的攻击层出不穷,因此很多路由器可能就此取消这两个封包的响应功能。所以我们可以使用 TCP 来侦测呦! 例如使用同样的方法,透过等待时间 1 秒,以及 TCP 80 埠口的情况下,可以这样做:

[root@www ~]# traceroute -w 1 -n -T tw.yahoo.com

10、察看本机的网络联机: netstat

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 每五秒更新一次网络状态的显示;

1)列出目前的路由表状态,且以 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 的主要功能

2)列出目前的所有网络联机状态,使用 IP 与 port number

[root@localhost sshpass-jiaofan]# netstat -anptl 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9222            0.0.0.0:*               LISTEN      954/sshd            
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      954/sshd            
tcp        0     52 192.168.91.159:22       192.168.91.1:57321      ESTABLISHED 1382/sshd: root@pts 
tcp        0      0 192.168.91.159:22       192.168.91.1:52401      ESTABLISHED 1155/sshd: root@pts 
tcp6       0      0 :::9222                 :::*                    LISTEN      954/sshd            
tcp6       0      0 :::21                   :::*                    LISTEN      961/xinetd          
tcp6       0      0 :::22                   :::*                    LISTEN      954/sshd 
  • Proto:该联机的封包协议,主要为 TCP/UDP 等封包;
  • Recv-Q:非由用户程序连接所复制而来的总 bytes 数;
  • Send-Q:由远程主机所传送而来,但不具有 ACK 标志的总 bytes 数, 意指主动联机 SYN 或其他标志的封包所占的 bytes 数;
  • Local Address:本地端的地址,可以是 IP (-n 参数存在时), 也可以是完整的主机名。使的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差异。 如上所示,在 port 22 的接口中,使用的 :::22 就是针对 IPv6 的显示,事实上他就相同于 0.0.0.0:22 的意思。 至于 port 25 仅针对 lo 接口开放,意指 Internet 基本上是无法连接到我本机的 25 埠口啦!
  • Foreign Address:远程的主机 IP 与 port number
  • stat:状态栏,主要的状态含有:
    - ESTABLISED:已建立联机的状态;
    - SYN_SENT:发出主动联机 (SYN 标志) 的联机封包;
    - SYN_RECV:接收到一个要求联机的主动联机封包;
    - FIN_WAIT1:该插槽服务(socket)已中断,该联机正在断线当中;
    - FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封包;
    - TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束;
    - LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。

11、侦测主机名与 IP 对应: host, nslookup

host参数:

[root@www ~]# host [-a] hostname [server]
 选项与参数:
 -a :列出该主机详细的各项主机名设定数据
 [server] :可以使用非为 /etc/resolv.conf 的 DNS 服务器 IP 来查询。

1)列出 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

2)用指定的DNS服务器(168.95.1.1)查询

[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

nslookup参数

[root@www ~]# nslookup [-query=[type]] [hostname|IP]
 选项与参数:
 -query=type:查询的类型,除了传统的 IP 与主机名对应外,DNS 还有很多
信息,
 所以我们可以查询很多不同的信息,包括 mx, cname 等等,
 例如: -query=mx 的查询方法!

1)列出 tw.yahoo.com 的 IP

 [root@www ~]# nslookup www.google.com
 Server: 168.95.1.1
 Address: 168.95.1.1#53
 
 Non-authoritative answer:
  www.google.com canonical name = www.l.google.com.
 Name: www.l.google.com
 Address: 74.125.71.106
 ....(底下省略)....

2)找出 168.95.1.1 的主机名

 [root@www ~]# nslookup 168.95.1.1 
 Server: 168.95.1.1 
 Address: 168.95.1.1#53 
 
 1.1.95.168.in-addr.arpa name = dns.hinet.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值