Linux 常用网络指令介绍一

Linux 常用网络指令介绍一

来源于鸟哥的私房菜

Linux 的网络功能相当的强悍,一时之间我们也无法完全的介绍所有的网络指令, 这个章节主要的目的在介绍一些常见的网络指令而已。至于每个指令的详细用途将在后续服务器架设时, 依照指令的相关性来进行说明。当然,在这个章节的主要目的是在于将所有的指令汇整在一起,比较容易了解啦! 还有,这一章鸟哥新增了一些封包撷取的指令,若不熟悉没关系,先放着,全部读完后再回来这一章仔细练习啊!

1. 网络参数设定指令:

  1.1 ifconfig, ifup, ifdown

  1.2 route

  1.3 ip

  1.4 iwlist, iwconfig

  1.5 dhclient

2. 网络侦错与观察指令

  2.1 ping:用 ping 追踪最大 MTU 数值

  2.2 traceroute

  2.3 netstat

  2.4 host

  2.5 nslookup

3. 远程联机指令

  3.1 telnet

  3.2 ftp

  3.3 lftp

  3.4 gaim:图形接口的实时通讯软件

4. 文字接口网页浏览

  4.1 lynx

  4.2 wget

5. 封包撷取功能

  5.1 tcpdump

  5.2 ethereal

  5.3 nc, netcat

6. 重点回顾

7. 课后练习:

8. 参考数据

9. 针对本文的建议:
[url]http://phorum.vbird.org/viewtopic.php?t=26123[/url]

________________________________________

网络参数设定指令:

任何时刻如果你想要做好你的网络参数设定,包括 IP 参数、路由参数与无线网络等等, 就得要了解底下这些相关的指令才行!其中以 route 及 ip 这两支指令算是较重要的喔! ^_^ 当然,比较早期的用法,我们都是使用 ifconfig 的啦!

•    ifconfig:查询、设定网络卡与 IP 网域等相关参数;

•    ifup, ifdown:这两个档案是 script ,透过更简单的方式来启动网络接口;

•    route:查询、设定路由表 (route table)

•    ip:复合式的指令,可以直接修改上述提到的功能;

________________________________________

ifconfig, ifup, ifdown

这三个指令的用途都是在启动网络接口,不过, ifup 与 ifdown 仅能就 /etc/sysconfig/network-scripts 内的 ifcfg-ethx (x 为数字) 进行启动或关闭的动作,并不能直接修改网络参数,除非手动调整 ifcfg-ethx 档案才行。至于 ifconfig 则可以直接手动给予某个接口 IP 或调整其网络参数! 底下我们就分别来谈一谈先!

________________________________________

•  ifconfig

ifconfig 主要是可以手动的启动、观察与修改网络接口的相关参数,可以修改的参数很多啊, 包括 IP 参数以及 MTU 等等都可以修改,他的语法如下:

[root@linux ~]# ifconfig {interface} {up|down}  <== 观察与启动接口

[root@linux ~]# ifconfig interface {options}    <== 设定与修改接口

参数:

interface:网络卡接口代号,包括 eth0, eth1, ppp0 等等

options  :可以接的参数,包括如下:

    up, down :启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)

    mtu      :可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)

    netmask  :就是子屏蔽网络;

    broadcast:就是广播地址啊!

范例:

范例一:观察所有的网络接口(直接输入 ifconfig)

[root@linux ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0F:EA:A3:06:A2

          inet addr:192.168.10.100  Bcast:192.168.10.255  Mask:255.255.255.0

          inet6 addr: fe80::20f:eaff:fe73:682/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3439 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2735 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:646935 (631.7 KiB)  TX bytes:562313 (549.1 KiB)

          Interrupt:209 Memory:fb000000-0

一般来说,直接输入 ifconfig 就会列出目前已经被启动的卡, 不论这个卡是否有给予 IP ,都会被显示出来。而如果是输入 ifconfig eth0 , 则会秀出这张接口的相关数据,而不管该接口是否有启动。所以如果您想要知道某张网络卡的 Hardware Address,直接输入『 ifconfig “网络接口代号” 』即可喔! ^_^! 至于上表出现的各项数据是这样的(数据排列由上而下、由左而右):

•    eth0:就是网络卡的代号,也有 lo 这个 loopback ;

•    HWaddr:就是网络卡的硬件地址,俗称的 MAC 是也;

•    inet addr:IPv4 的 IP 地址,后续的 Bcase, Mask 分别代表的是 Broadcast 与 netmask 喔!

•    inet6 addr:是 IPv6 的版本的 IP ,我们没有使用,所以略过;

•    MTU:就是 MTU 啊!

•    RX:那一行代表的是网络由启动到目前为止的封包接收情况, packets 代表封包数、errors 代表封包发生错误的数量、 dropped 代表封包由于有问题而遭丢弃的数量等等

•    TX:与 RX 相反,为网络由启动到目前为止的传送情况;

•    collisions:代表封包碰撞的情况,如果发生太多次, 表示您的网络状况不太好;

•    txqueuelen:代表用来传输数据的缓冲区的储存长度;

•    RX bytes, TX bytes:总传送、接收的字节总量

•    Interrupt, Memory:网络卡硬件的数据, IRQ 岔断与内存地址;

透过观察上述的资料,大致上可以了解到您的网络情况,尤其是那个 RX, TX 内的 error 数量, 以及是否发生严重的 collision 情况,都是需要注意的喔! ^_^

范例二:暂时修改网络接口

[root@linux ~]# ifconfig eth0 192.168.100.100

# 如果不加任何其它参数,则系统会依照该 IP 所在的 class 范围,

# 自动的计算出 netmask 以及 network, broadcast 等 IP 参数;

[root@linux ~]# ifconfig eth0 192.168.100.100 netmask 255.255.255.128 \

> mtu 8000

# 设定网络接口,同时设定 MTU 的数值!

[root@linux ~]# ifconfig eth0 mtu 9000

# 仅修改该接口的 MTU 数值,其它的保持不动!

[root@linux ~]# ifconfig eth0:0 192.168.50.50

# 仔细看那个界面, eth0:0 喔!那就是在该网络接口上,再仿真一个网络接口,

# 亦即是在一张网络卡上面设定多个 IP 的意思啦!

[root@linux ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0F:EA:A3:06:A2

          inet addr:192.168.10.100  Bcast:192.168.10.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3669 errors:0 dropped:0 overruns:0 frame:0

          TX packets:2892 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:667547 (651.9 KiB)  TX bytes:584799 (571.0 KiB)

          Interrupt:209 Memory:fb000000-0

eth0:0    Link encap:Ethernet  HWaddr 00:0F:EA:A3:06:A2

          inet addr:192.168.200.2  Bcast:192.168.200.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          Interrupt:209 Memory:fb000000-0

# 仔细看,是否与硬件有关的信息都相同啊!没错!因为是同一张网卡嘛!

[root@linux ~]# ifconfig eth0:0 down

# 关掉 eth0:0 这个界面。如果想要启动 eth1 ,并且不给予任何网络参数,

# ifconfig eth1 up 就可以达到了!

[root@linux ~]# /etc/init.d/network restart

# 刚刚设定的数据全部失效,会以 ifcfg-ethx 的设定为主!

呵呵!使用 ifconfig 可以暂时手动来设定或修改某个适配卡的相关功能, 并且也可以透过 eth0:0 这种虚拟的网络接口来设定好一张网络卡上面的多个 IP 喔! 手动的方式真是简单啊!并且设定错误也不打紧,因为我们可以利用 /etc/init.d/network restart 来重新启动整个网络接口,那么之前手动的设定数据会全部都失效喔!另外, 要启动某个网络接口,但又不让他具有 IP 参数时,直接给他 ifconfig eth0 up 即可! 这个动作经常在无线网卡当中会进行, 因为我们必须要启动无线网卡让他去侦测 AP 存在与否啊!

________________________________________

•  ifup, ifdown

实时的手动修改一些网络接口参数,可以利用 ifconfig 来达成,如果是要直接以设定档, 亦即是在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等档案的设定参数来启动的话, 那就得要透过 ifdown 或 ifup 来达成了。

[root@linux ~]# ifup   {interface}

[root@linux ~]# ifdown {interface}

[root@linux ~]# ifup eth0

ifup 与 ifdown 真是太简单了!这两支程序其实是 script 而已,他会直接到 /etc/sysconfig/network-scripts 目录下搜寻对应的设定档,例如 ifup eth0 时,他会找出 ifcfg-eth0 这个档案的内容,然后来加以设定。 关于 ifcfg-eth0 的设定则请参考前一章连上 Internet 的说明。

不过,由于这两支程序主要是搜寻设定文件 (ifcfg-ethx) 来进行启动与关闭的, 所以在使用前请确定 ifcfg-ethx 是否真的存在于正确的目录内,否则会启动失败喔! 另外,如果以 ifconfig eth0 …. 来设定或者是修改了网络接口后, 那就无法再以 ifdown eth0 的方式来关闭了!因为 ifdown 会分析比对目前的网络参数与 ifcfg-eth0 是否相符,不符的话,就会放弃该次动作。因此,使用 ifconfig 修改完毕后,应该要以 ifconfig eth0 down 才能够关闭该接口喔!

________________________________________

路由修改 route

我们在网络基础的时候谈过关于路由的问题, 两部主机之间一定要有路由才能够互通 TCP/IP 的协议,否则就无法进行联机啊! 一般来说,只要有网络接口,该接口就会产生一个路由,例如在鸟哥实验室内部的主机有一个 eth0 及 lo , 所以:

[root@linux ~]# route [-nee]

[root@linux ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]

[root@linux ~]# 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@linux ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.10.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.10.30   0.0.0.0         UG    0      0        0 eth0

[root@linux ~]# route

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.10.0    *               255.255.255.0   U     0      0        0 eth0

169.254.0.0     *               255.255.0.0     U     0      0        0 eth0

default         server.cluster  0.0.0.0         UG    0      0        0 eth0

由上面的例子当中仔细观察 route 与 route -n 的输出结果,你可以发现有加 -n 参数的主要是显示出 IP ,至于使用 route 而已的话,显示的则是『主机名称』喔! 也就是说,在预设的情况下, route 会去找出该 IP 的主机名称,如果找不到呢? 就会显示的钝钝的(有点小慢),所以说,鸟哥通常都直接使用 route -n 啦! 由上面看起来,我们也知道 default = 0.0.0.0/0.0.0.0 , 而上面的信息有哪些你必须要知道的呢?

•    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:这个路由传递封包的接口。

此外,观察一下上面的路由排列顺序喔,依序是由小网域 (192.168.10.0/24 是 Class C),逐渐到大网域 (169.254.0.0/16 Class B) 最后则是预设路由 (0.0.0.0/0.0.0.0)。 然后当我们要判断某个网络封包应该如何传送的时候,该封包会经由这个路由的过程来判断喔! 举例来说,我上头仅有三个路由,若我有一个传往 192.168.10.20 的封包要传递,那首先会找 192.168.10.0/24 这个网域的路由,找到了!所以直接由 eth0 传送出去;

如果是传送到 Yahoo 的主机呢? Yahoo 的主机 IP 是 202.43.195.52,我通过判断 1)不是 192.168.10.0/24, 2)不是 169.254.0.0/16 结果到达 3)0/0 时,OK!传出去了,透过 eth0 将封包传给 192.168.10.30 那部 gateway 主机啊!所以说,路由是有顺序的。

因此当你重复设定多个同样的路由时, 例如在你的主机上的两张网络卡设定为相同网域的 IP 时,会出现什么情况?会出现如下的情况:

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

也就是说,由于路由是依照顺序来排列与传送的, 所以不论封包是由那个界面 (eth0, eth1) 所接收,都会由上述的 eth0 传送出去, 所以,在一部主机上面设定两个相同网域的 IP 本身没有什么意义!有点多此一举就是了。 除非是类似虚拟主机 (Xen, VMware 等软件) 所架设的多主机时,才会有这个必要~

范例二:路由的增加与删除

[root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0

# 上面这个动作可以删除掉 169.254.0.0/16 这个网域!

# 请注意,在删除的时候,需要将路由表上面出现的信息都写入

# 包括  netmask , dev 等等参数喔!注意注意

[root@linux ~]# 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.10.100 这个 IP ,所以不能与 192.168.200.254

# 这个网段直接使用 MAC 互通!这样说,可以理解喔!?

[root@linux ~]# route add default gw 192.168.10.30

# 增加预设路由的方法!请注意,只要有一个预设路由就够了喔!

# 在这个地方如果您随便设定后,记得使用底下的指令重新设定你的网络

# /etc/init.d/network restart

如果是要进行路由的删除与增加,那就得要参考上面的例子了, 其实,使用 man route 里面的数据就很丰富了!仔细查阅一下啰! 你只要记得,当出现『SIOCADDRT: Network is unreachable』 这个错误时,肯定是由于 gw 后面接的 IP 无法直接与您的网域沟通 (Gateway 并不在你的网域内), 所以,赶紧检查一下是否输入错误啊!加油吧!

________________________________________

ip

ip 是个指令喔!并不是那个 TCP/IP 的 IP 啦!这个 ip 指令的功能可多了! 基本上,他就是整合了 ifconfig 与 route 这两个指令啰~不过, ip 可以达成的功能却又多更多! 真是个相当厉害的指令。如果您有兴趣的话,请自行 vi /sbin/ifup ,就知道整个 ifup 就是利用 ip 这个指令来达成的。好了,如何使用呢?让我们来瞧一瞧先!

[root@linux ~]# ip [option] [动作] [指令]

参数:

option :设定的参数,主要有:

    -s :显示出该装置的统计数据(statistics),例如总接受封包数等;

动作:亦即是可以针对哪些网络参数进行动作,包括有:

    link  :关于装置 (device) 的相关设定,包括 MTU, MAC 地址等等

    addr/address :关于额外的 IP 协议,例如多 IP 的达成等等;

    route :与路由有关的相关设定

由上面的语法我们可以知道, ip 除了可以设定一些基本的网络参数之外,还能够进行额外的 IP 协议, 包括多 IP 的达成,真是太完美了!底下我们就分三个部分 (link, addr, route) 来介绍这个 ip 指令吧!

________________________________________

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

ip link 可以设定与装置 (device) 有关的相关设定,包括 MTU 以及该网络接口的 MAC 等等, 当然也可以启动 (up) 或关闭 (down) 某个网络接口啦!整个语法是这样的:

[root@linux ~]# ip [-s] link show  <== 单纯的查阅该装置相关的信息

[root@linux ~]# ip link set [device] [动作与参数]

参数:

show:仅显示出这个装置的相关内容,如果加上 -s 会显示更多统计数据;

set :可以开始设定项目, device 指的是 eth0, eth1 等等界面代号;

动作与参数:包括有底下的这些动作:

   up|down  :启动 (up) 或关闭 (down) 某个接口,其它参数使用预设的以太网络;

   address  :如果这个装置可以更改 MAC 的话,用这个参数修改!

   name     :给予这个装置一个特殊的名字;

   mtu      :就是最大传输单元啊!

范例一:显示出所有的接口信息

[root@linux ~]# ip link show

1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

3: sit0: <NOARP> mtu 1480 qdisc noop

    link/sit 0.0.0.0 brd 0.0.0.0

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

2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

    RX: bytes  packets  errors  dropped overrun mcast

    484011792  2247372  0       0       0       0

    TX: bytes  packets  errors  dropped carrier collsns

    2914104290 2867753  0       0       0       0

使用 ip link show 可以显示出整个装置接口的硬件相关信息,如上所示,包括网卡地址(MAC)、MTU等等, 比较有趣的应该是那个 sit0 的接口了,那个 sit0 的界面是用在 IPv4 及 IPv6 的封包转换上的, 对于我们仅使用 IPv4 的网络是没有作用的。 lo 及 sit0 都是主机内部所自行设定的。 而如果加上 -s 的参数后,则这个网络卡的相关统计信息就会被列出来, 包括接收 (RX) 及传送 (TX) 的封包数量等等,详细的内容与 ifconfig 所输出的结果相同的。

范例二:启动、关闭与设定装置的相关信息

[root@linux ~]# ip link set eth0 up

# 启动 eth0 这个装置接口;

[root@linux ~]# ip link set eth0 down

# 阿就关闭啊!简单的要命~

[root@linux ~]# ip link set eth0 mtu 1000

# 更改 MTU 的值,达到 1000 bytes,单位就是 bytes 啊!

更新网络卡的 MTU 使用 ifconfig 也可以达成啊!没啥了不起,不过,如果是要更改『网络卡代号、 MAC 地址的信息』的话,那可就得使用 ip 啰~不过,设定前得要先关闭该网络卡,否则会不成功。 如下所示:

范例三:修改网络卡代号、MAC 等参数

[root@linux ~]# ip link set eth0 name vbird

SIOCSIFNAME: Device or resource busy

# 因为该装置目前是启动的,所以不能这样做设定。你应该要这样做:

[root@linux ~]# ip link set eth0 down       <==关闭界面

[root@linux ~]# ip link set eth0 name vbird <==重新设定

[root@linux ~]# ip link show                <==观察一下

2. vbird: <BROADCAST,MILTICASE> mtu 900 qdisc pfifo_fast qlen 1000

    link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff

# 怕了吧!连网络卡代号都可以改变!不过,玩玩后记得改回来啊!

# 因为我们的 ifcfg-eth0 还是使用原本的装置代号!避免有问题,要改回来

[root@linux ~]# ip link set vbird name eth0 <==界面改回来

[root@linux ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa

[root@linux ~]# ip link show eth0

# 如果你的网络卡支持硬件地址 (MAC) 可以更改的话,

# 那么上面这个动作就可以更改你的网络卡地址了!厉害吧!

# 不过,还是那句老话,测试完之后请立刻改回来啊!

在这个装置的硬件相关信息设定上面,包括 MTU, MAC 以及传输的模式等等,都可以在这里设定。 有趣的是那个 address 的项目,那个项目后面接的可是硬件地址 (MAC) 而不是 IP 喔! 很容易搞错啊!切记切记!更多的硬件参数可以使用 man ip 查阅一下与 ip link 有关的设定。

________________________________________

•  关于额外的 IP 相关设定: ip address

如果说 ip link 是与 OSI 七层协定 的第二层资料连阶层有关的话,那么 ip address (ip addr) 就是与第三层网络层有关的参数啦! 主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等等。

[root@linux ~]# ip address show   <==就是查阅 IP 参数啊!

[root@linux ~]# 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 啦!

范例一:显示出所有的接口之 IP 参数:

[root@linux ~]# ip address show

1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue

    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,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0

    inet6 fe80::250:fcff:fe22:9acb/64 scope link

       valid_lft forever preferred_lft forever

3: sit0: <NOARP> mtu 1480 qdisc noop

    link/sit 0.0.0.0 brd 0.0.0.0

看到上面那个特殊的字体吗?没错!那就是 IP 参数啦!也是 ip address 最主要的功能。 底下我们进一步来新增虚拟的网络介面试看看:

范例二:新增一个接口,名称假设为 eth0:vbird

[root@linux ~]# ip address add 192.168.50.50/24 broadcast + \

> dev eth0 label eth0:vbird

[root@linux ~]# ip address show eth0

2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:40:d0:13:c3:46 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::240:d0ff:fe13:c346/64 scope link

       valid_lft forever preferred_lft forever

# 看到上面的特殊字体了吧?多出了一行新的接口,且名称是 eth0:vbird

# 至于那个 broadcast + 也可以写成 broadcast 192.168.50.255 啦!

[root@linux ~]# ifconfig

eth0:vbir Link encap:Ethernet  HWaddr 00:40:D0:13:C3:46

          inet addr:192.168.50.50  Bcast:192.168.50.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          Interrupt:5 Base address:0x3e00

# 如果使用 ifconfig 就能够看到这个怪东西了!可爱吧! ^_^

范例三:将刚刚的界面删除

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

# 删除就比较简单啊! ^_^

________________________________________

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

呵呵,这个项目当然就是路由的观察与设定啰!事实上, ip route 的功能几乎与 route 这个指令差不多,但是,他还可以进行额外的参数设计,例如 MTU 的规划等等,相当的强悍啊!

[root@linux ~]# ip route show  <==单纯的显示出路由的设定而已

[root@linux ~]# 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@linux ~]# ip route show

192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2

169.254.0.0/16 dev eth1  scope link

default via 192.168.1.254 dev eth1

如上表所示,最简单的功能就是显示出目前的路由信息,其实跟 route 这个指令相同啦! 指示必须要注意几个小东西:

•    proto:此路由的路由协议,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判断自动设定。

•    scope:路由的范围,主要是 link ,亦即是与本装置有关的直接联机。

再来看一下如何进行路由的增加与删除吧!

范例二:增加路由,主要是本机直接可沟通的网域

[root@linux ~]# ip route add 192.168.5.0/24 dev eth0

# 针对本机直接沟通的网域设定好路由,不需要透过外部的路由器

[root@linux ~]# ip route show

192.168.5.0/24 dev eth0  scope link

….以下省略….

范例三:增加可以通往外部的路由,需透过 router 喔!

[root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0

[root@linux ~]# 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@linux ~]# ip route add default via 192.168.1.2 dev eth0

# 那个 192.168.1.2 就是我的预设路由器 (gateway) 的意思啊! ^_^

# 真的记得,只要一个预设路由就 OK !

范例五:删除路由

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

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

事实上,这个 ip 的指令实在是太博大精深了!刚接触 Linux 网络的朋友,可能会看到有点晕~ 不要紧啦!您先会使用 ifconfig, ifup , ifdown 与 route 即可, 等以后有经验了之后,再继续回来玩 ip 这个好玩的指令吧! ^_^ 有兴趣的话,也可以自行参考 ethtool 这个指令喔! (man ethtool)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111140.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MySQL 添加索引,删除索引及其用法[通俗易懂]

    MySQL 添加索引,删除索引及其用法[通俗易懂]原文:https://www.cnblogs.com/zz-tt/p/6609828.html一.索引的作用一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。在数据量和访问量不大的情况下,mysql访问是非常快的,是否加索引对访问影响…

  • reduce实现数组求和_js数组reduce

    reduce实现数组求和_js数组reducereducereduce收敛4个参数,返回的是叠加后的结果,原数组不发生变化,回调函数返回的结果//从左向右//prev代表前一项,cur代表当前项【求和】letarr=[1,3,5,8,9,7];letsum=arr.reduce(function(prev,cur,index,arr){ //return100;//本次的返回值…

  • Python+Selenium面试题(附详细解答)

    Python+Selenium面试题(附详细解答)一、选择题(1分18题,共18分)1.下面哪些关于自动化测试的说法是错误的:(ACD)A.自动化测试可以完全取代手工测试B.自动化测试可以大幅度减少测试团队的工作量C.性能测试不能自动化D.自动化测试能够发现大量的新缺陷2.下列哪种是Python元组的定义方式?(ABCD)A.([2,3],1) B.(1,) C.(1,{“name”:”sex”}) D….

  • python 中os模块os.path.exists()含义

    python 中os模块os.path.exists()含义os即operatingsystem(操作系统),Python的os模块封装了常见的文件和目录操作。os.path模块主要用于文件的属性获取,exists是“存在”的意思,所以顾名思义,os.path.exists()就是判断括号里的文件是否存在的意思,括号内的可以是文件路径。举个栗子:user.py为存在于当前目录的一个文件输入代码:importospath…

  • TerminateProcess函数简单使用示例[通俗易懂]

    TerminateProcess顾名思义,就是终止进程的意思。是WindowsAPI的函数,示例代码如下://Demo.cpp:定义控制台应用程序的入口点。//终止进程Demo#include”stdafx.h”usingnamespacestd;//@param:dwpid:指定需要关闭的进程pidintCloseProcess(DWORDdwpi…

  • 在安装twincat plc时,出现 there are some files marked for deletion on next reboot.please reboot first then

    在安装twincat plc时,出现 there are some files marked for deletion on next reboot.please reboot first then

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号