• 5.1 网络参数设定使用的指令
    • 5.1.1 手动/自动设定与启动/关闭 IP 参数: ifconfig, ifup, ifdown
    • 5.1.2 路由修改: route
    • 5.1.3 网络参数综合指令: ip
    • 5.1.4 无线网络: iwlist, iwconfig
    • 5.1.5 手动使用 DHCP 自动取得 IP 参数: dhclient

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

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

    • ifconfig :查询、设定网络卡与 IP 网域等相关参数;
    • ifup, ifdown:这两个档案是 script,透过更简单的方式来启动网络接口;
    • route :查询、设定路由表 (route table)
    • ip :复合式的指令, 可以直接修改上述提到的功能;

    5.1.1 手动/自动设定与启动/关闭 IP 参数: ifconfig, ifup, ifdown

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

    • ifconfig
      ifconfig 主要是可以手动的启动、观察与修改网络接口的相关参数,可以修改的参数很多啊,包括 IP 参数以及 MTU 等等都可以修改,他的语法如下:
    1. [root@www ~]# ifconfig {interface} {up|down} <== 观察与启动接口
    2. [root@www ~]# ifconfig interface {options} <== 设定与修改接口
    3. 选项与参数:
    4. interface:网络卡接口代号,包括 eth0, eth1, ppp0 等等
    5. options :可以接的参数,包括如下:
    6. up, down :启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)
    7. mtu :可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)
    8. netmask :就是子屏蔽网络;
    9. broadcast:就是广播地址啊!
    10. # 范例一:观察所有的网络接口(直接输入 ifconfig)
    11. [root@www ~]# ifconfig
    12. eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
    13. inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    14. inet6 addr: fe80::a00:27ff:fe71:85bd/64 Scope:Link
    15. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    16. RX packets:2555 errors:0 dropped:0 overruns:0 frame:0
    17. TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
    18. collisions:0 txqueuelen:1000
    19. RX bytes:239892 (234.2 KiB) TX bytes:11153 (10.8 KiB)

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

    • eth0:就是网络卡的代号,也有 lo 这个 loopback ;
    • HWaddr:就是网络卡的硬件地址,俗称的 MAC 是也;
    • inet addr:IPv4 的 IP 地址,后续的 Bcast, Mask 分别代表的是 Broadcast 与 netmask 喔!
    • inet6 addr:是 IPv6 的版本的 IP ,我们没有使用,所以略过;
    • MTU:就是第二章谈到的 MTU 啊!
    • RX:那一行代表的是网络由启动到目前为止的封包接收情况, packets 代表封包数、errors 代表封包发生错误的数量、 dropped 代表封包由于有问题而遭丢弃的数量等等
    • TX:与 RX 相反,为网络由启动到目前为止的传送情况;
    • collisions:代表封包碰撞的情况,如果发生太多次, 表示你的网络状况不太好;
    • txqueuelen:代表用来传输数据的缓冲区的储存长度;
    • RX bytes, TX bytes:总接收、发送字节总量
      透过观察上述的资料,大致上可以了解到你的网络情况,尤其是那个 RX, TX 内的 error 数量, 以及是否发生严重的 collision 情况,都是需要注意的喔! ^_^
    1. # 范例二:暂时修改网络接口,给予 eth0 一个 192.168.100.100/24 的参数
    2. [root@www ~]# ifconfig eth0 192.168.100.100
    3. # 如果不加任何其他参数,则系统会依照该 IP 所在的 class 范围,自动的计算出
    4. # netmask 以及 network, broadcast 等 IP 参数,若想改其他参数则:
    5. [root@www ~]# ifconfig eth0 192.168.100.100 \
    6. > netmask 255.255.255.128 mtu 8000
    7. # 设定不同参数的网络接口,同时设定 MTU 的数值!
    8. [root@www ~]# ifconfig eth0 mtu 9000
    9. # 仅修改该接口的 MTU 数值,其他的保持不动!
    10. [root@www ~]# ifconfig eth0:0 192.168.50.50
    11. # 仔细看那个界面是 eth0:0 喔!那就是在该实体网卡上,再仿真一个网络接口,
    12. # 亦即是在一张网络卡上面设定多个 IP 的意思啦!
    13. [root@www ~]# ifconfig
    14. eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
    15. inet addr:192.168.100.100 Bcast:192.168.100.127 Mask:255.255.255.128
    16. inet6 addr: fe80::a00:27ff:fe71:85bd/64 Scope:Link
    17. UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
    18. RX packets:2555 errors:0 dropped:0 overruns:0 frame:0
    19. TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
    20. collisions:0 txqueuelen:1000
    21. RX bytes:239892 (234.2 KiB) TX bytes:11153 (10.8 KiB)
    22. eth0:0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
    23. inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0
    24. UP BROADCAST RUNNING MULTICAST MTU:9000 Metric:1
    25. # 仔细看,是否与硬件有关的信息都相同啊!没错!因为是同一张网卡嘛!
    26. # 那如果想要将刚刚建立的那张 eth0:0 关闭就好,不影响原有的 eth0 呢?
    27. [root@www ~]# ifconfig eth0:0 down
    28. # 关掉 eth0:0 这个界面。那如果想用默认值启动 eth1:『ifconfig eth1 up』即可达成
    29. # 范例三:将手动的处理全部取消,使用原有的设定值重建网络参数:
    30. [root@www ~]# /etc/init.d/network restart
    31. # 刚刚设定的数据全部失效,会以 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 来达成了。
    1. [root@www ~]# ifup {interface}
    2. [root@www ~]# ifdown {interface}
    3. [root@www ~]# ifup eth0

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

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


    5.1.2 路由修改: route

    我们在第二章网络基础的时候谈过关于路由的问题, 两部主机之间一定要有路由才能够互通 TCP/IP 的协议,否则就无法进行联机啊!一般来说,只要有网络接口, 该接口就会产生一个路由,所以我们安装的主机有一个 eth0 的接口,看起来就会是这样:

    1. [root@www ~]# route [-nee]
    2. [root@www ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    3. [root@www ~]# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    4. 观察的参数:
    5. -n :不要使用通讯协议或主机名,直接使用 IP port number
    6. -ee :使用更详细的信息来显示
    7. 增加 (add) 与删除 (del) 路由的相关参数:
    8. -net :表示后面接的路由为一个网域;
    9. -host :表示后面接的为连接到单部主机的路由;
    10. netmask :与网域有关,可以设定 netmask 决定网域的大小;
    11. gw gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
    12. dev :如果只是要指定由那一块网络卡联机出去,则使用这个设定,后面接 eth0
    13. # 范例一:单纯的观察路由状态
    14. [root@www ~]# route -n
    15. Kernel IP routing table
    16. Destination Gateway Genmask Flags Metric Ref Use Iface
    17. 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    18. 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
    19. 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
    20. [root@www ~]# route
    21. Kernel IP routing table
    22. Destination Gateway Genmask Flags Metric Ref Use Iface
    23. 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
    24. link-local * 255.255.0.0 U 1002 0 0 eth0
    25. default 192.168.1.254 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:总共有多个旗标,代表的意义如下:

      • 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):路由已经被修改了;
      • ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)
    • Iface:这个路由传递封包的接口。

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

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

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

    1. Kernel IP routing table
    2. Destination Gateway Genmask Flags Metric Ref Use Iface
    3. 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    4. 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

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

    1. # 范例二:路由的增加与删除
    2. [root@www ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
    3. # 上面这个动作可以删除掉 169.254.0.0/16 这个网域!
    4. # 请注意,在删除的时候,需要将路由表上面出现的信息都写入
    5. # 包括 netmask , dev 等等参数喔!注意注意
    6. [root@www ~]# route add -net 192.168.100.0 \
    7. > netmask 255.255.255.0 dev eth0
    8. # 透过 route add 来增加一个路由!请注意,这个路由的设定必须要能够与你的网络互通。
    9. # 举例来说,如果我下达底下的指令就会显示错误:
    10. # route add -net 192.168.200.0 netmask 255.255.255.0 <u>gw 192.168.200.254</u>
    11. # 因为我的主机内仅有 192.168.1.11 这个 IP ,所以不能直接与 192.168.200.254
    12. # 这个网段直接使用 MAC 互通!这样说,可以理解吗?
    13. [root@www ~]# route add default gw 192.168.1.250
    14. # 增加预设路由的方法!请注意,只要有一个预设路由就够了喔!
    15. # 同样的,那个 192.168.1.250 的 IP 也需要能与你的 LAN 沟通才行!
    16. # 在这个地方如果你随便设定后,记得使用底下的指令重新设定你的网络
    17. # <u>/etc/init.d/network restart</u>

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

    Tips: 一般来说,鸟哥如果接触到一个新的环境内的主机,在不想要更动原系统的配置文件情况下,然后预计使用本书的网络环境设定时, 手动的处理就变成:『ifconfig eth0 192.168.1.100; route add default gw 192.168.1.254』这样就搞定了! 直接联网与测试。等到完成测试后,再给她 /etc/init.d/network restart 恢复原系统的网络即可。

    7.1. 5.1 网络参数设定使用的指令  - 图1


    5.1.3 网络参数综合指令: ip

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

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

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

    • 关于装置接口 (device) 的相关设定: ip link
      ip link 可以设定与装置 (device) 有关的相关参数,包括 MTU 以及该网络接口的 MAC 等等,当然也可以启动 (up) 或关闭 (down) 某个网络接口啦!整个语法是这样的:
    1. [root@www ~]# ip [-s] link show <== 单纯的查阅该装置相关的信息
    2. [root@www ~]# ip link set [device] [动作与参数]
    3. 选项与参数:
    4. show:仅显示出这个装置的相关内容,如果加上 -s 会显示更多统计数据;
    5. set :可以开始设定项目, device 指的是 eth0, eth1 等等界面代号;
    6. 动作与参数:包括有底下的这些动作:
    7. up|down :启动 (up) 或关闭 (down) 某个接口,其他参数使用默认的以太网络;
    8. address :如果这个装置可以更改 MAC 的话,用这个参数修改!
    9. name :给予这个装置一个特殊的名字;
    10. mtu :就是最大传输单元啊!
    11. # 范例一:显示出所有的接口信息
    12. [root@www ~]# ip link show
    13. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    14. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    15. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    16. link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
    17. 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    18. link/ether 08:00:27:2a:30:14 brd ff:ff:ff:ff:ff:ff
    19. 4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    20. link/sit 0.0.0.0 brd 0.0.0.0
    21. [root@www ~]# ip -s link show eth0
    22. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    23. link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
    24. RX: bytes packets errors dropped overrun mcast
    25. 314685 3354 0 0 0 0
    26. TX: bytes packets errors dropped carrier collsns
    27. 27200 199 0 0 0 0

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

    1. # 范例二:启动、关闭与设定装置的相关信息
    2. [root@www ~]# ip link set eth0 up
    3. # 启动 eth0 这个装置接口;
    4. [root@www ~]# ip link set eth0 down
    5. # 阿就关闭啊!简单的要命~
    6. [root@www ~]# ip link set eth0 mtu 1000
    7. # 更改 MTU 的值,达到 1000 bytes,单位就是 bytes 啊!

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

    1. # 范例三:修改网络卡代号、MAC 等参数
    2. [root@www ~]# ip link set eth0 name vbird
    3. SIOCSIFNAME: Device or resource busy
    4. # 因为该装置目前是启动的,所以不能这样做设定。你应该要这样做:
    5. [root@www ~]# ip link set eth0 down <==关闭界面
    6. [root@www ~]# ip link set eth0 name vbird <==重新设定
    7. [root@www ~]# ip link show <==观察一下
    8. 2: vbird: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    9. link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
    10. # 怕了吧!连网络卡代号都可以改变!不过,玩玩后记得改回来啊!
    11. # 因为我们的 ifcfg-eth0 还是使用原本的装置代号!避免有问题,要改回来
    12. [root@www ~]# ip link set vbird name eth0 <==界面改回来
    13. [root@www ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa
    14. [root@www ~]# ip link show eth0
    15. # 如果你的网络卡支持硬件地址(MAC)可以更改的话,上面这个动作就可以更改
    16. # 你的网络卡地址了!厉害吧!不过,还是那句老话,测试完之后请立刻改回来啊!

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

    • 关于额外的 IP 相关设定: ip address
      如果说 ip link 是与 OSI 七层协定 的第二层资料连阶层有关的话,那么 ip address (ip addr) 就是与第三层网络层有关的参数啦! 主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等等。
    1. [root@www ~]# ip address show <==就是查阅 IP 参数啊!
    2. [root@www ~]# ip address [add|del] [IP参数] [dev 装置名] [相关参数]
    3. 选项与参数:
    4. show :单纯的显示出接口的 IP 信息啊;
    5. add|del :进行相关参数的增加 (add) 或删除 (del) 设定,主要有:
    6. IP 参数:主要就是网域的设定,例如 192.168.100.100/24 之类的设定喔;
    7. dev :这个 IP 参数所要设定的接口,例如 eth0, eth1 等等;
    8. 相关参数:主要有底下这些:
    9. broadcast:设定广播地址,如果设定值是 + 表示『让系统自动计算』
    10. label :亦即是这个装置的别名,例如 eth0:0 就是了!
    11. scope :这个界面的领域,通常是这几个大类:
    12. global :允许来自所有来源的联机;
    13. site :仅支持 IPv6 ,仅允许本主机的联机;
    14. link :仅允许本装置自我联机;
    15. host :仅允许本主机内部的联机;
    16. 所以当然是使用 global 啰!预设也是 global 啦!
    17. # 范例一:显示出所有的接口之 IP 参数:
    18. [root@www ~]# ip address show
    19. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    20. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    21. inet 127.0.0.1/8 scope host lo
    22. inet6 ::1/128 scope host
    23. valid_lft forever preferred_lft forever
    24. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    25. link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
    26. inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
    27. inet6 fe80::a00:27ff:fe71:85bd/64 scope link
    28. valid_lft forever preferred_lft forever
    29. 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    30. link/ether 08:00:27:2a:30:14 brd ff:ff:ff:ff:ff:ff
    31. 4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    32. link/sit 0.0.0.0 brd 0.0.0.0

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

    1. # 范例二:新增一个接口,名称假设为 eth0:vbird
    2. [root@www ~]# ip address add 192.168.50.50/24 broadcast + \
    3. > dev eth0 label eth0:vbird
    4. [root@www ~]# ip address show eth0
    5. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    6. link/ether 08:00:27:71:85:bd brd ff:ff:ff:ff:ff:ff
    7. inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
    8. inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird
    9. inet6 fe80::a00:27ff:fe71:85bd/64 scope link
    10. valid_lft forever preferred_lft forever
    11. # 看到上面的特殊字体了吧?多出了一行新的接口,且名称是 eth0:vbird
    12. # 至于那个 broadcast + 也可以写成 broadcast 192.168.50.255 啦!
    13. [root@www ~]# ifconfig
    14. eth0:vbird Link encap:Ethernet HWaddr 08:00:27:71:85:BD
    15. inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0
    16. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    17. # 如果使用 ifconfig 就能够看到这个怪东西了!可爱吧! ^_^
    18. # 范例三:将刚刚的界面删除
    19. [root@www ~]# ip address del 192.168.50.50/24 dev eth0
    20. # 删除就比较简单啊! ^_^
    • 关于路由的相关设定: ip route
      这个项目当然就是路由的观察与设定啰!事实上, ip route 的功能几乎与 route 这个指令差不多,但是,他还可以进行额外的参数设计,例如 MTU 的规划等等,相当的强悍啊!
    1. [root@www ~]# ip route show <==单纯的显示出路由的设定而已
    2. [root@www ~]# ip route [add|del] [IP或网域] [via gateway] [dev 装置]
    3. 选项与参数:
    4. show :单纯的显示出路由表,也可以使用 list
    5. add|del :增加 (add) 或删除 (del) 路由的意思。
    6. IP或网域:可使用 192.168.50.0/24 之类的网域或者是单纯的 IP
    7. via :从那个 gateway 出去,不一定需要;
    8. dev :由那个装置连出去,这就需要了!
    9. mtu :可以额外的设定 MTU 的数值喔!
    10. # 范例一:显示出目前的路由资料
    11. [root@www ~]# ip route show
    12. 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
    13. 169.254.0.0/16 dev eth0 scope link metric 1002
    14. default via 192.168.1.254 dev eth0

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

    • proto:此路由的路由协议,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判断自动设定。
    • scope:路由的范围,主要是 link ,亦即是与本装置有关的直接联机。
      再来看一下如何进行路由的增加与删除吧!
    1. # 范例二:增加路由,主要是本机直接可沟通的网域
    2. [root@www ~]# ip route add 192.168.5.0/24 dev eth0
    3. # 针对本机直接沟通的网域设定好路由,不需要透过外部的路由器
    4. [root@www ~]# ip route show
    5. 192.168.5.0/24 dev eth0 scope link
    6. ....(以下省略)....
    7. # 范例三:增加可以通往外部的路由,需透过 router 喔!
    8. [root@www ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
    9. [root@www ~]# ip route show
    10. 192.168.5.0/24 dev eth0 scope link
    11. ....(其他省略)....
    12. 192.168.10.0/24 via 192.168.5.100 dev eth0
    13. # 仔细看喔,因为我有 192.168.5.0/24 的路由存在 (我的网卡直接联系),
    14. # 所以才可以将 192.168.10.0/24 的路由丢给 192.168.5.100
    15. # 那部主机来帮忙传递喔!与之前提到的 route 指令是一样的限制!
    16. # 范例四:增加预设路由
    17. [root@www ~]# ip route add default via 192.168.1.254 dev eth0
    18. # 那个 192.168.1.254 就是我的预设路由器 (gateway) 的意思啊! ^_^
    19. # 真的记得,只要一个预设路由就 OK !
    20. # 范例五:删除路由
    21. [root@www ~]# ip route del 192.168.10.0/24
    22. [root@www ~]# ip route del 192.168.5.0/24

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


    5.1.4 无线网络: iwlist, iwconfig

    这两个指令你必须要有无线网卡才能够进行喔!这两个指令的用途是这样的:

    • iwlist:利用无线网卡进行无线 AP 的侦测与取得相关的数据;
    • iwconfig:设定无线网卡的相关参数。
      这两个指令的应用我们在第四章里面的无线网卡设定谈了很多了, 所以这里我们不再详谈,有兴趣的朋友应该先使用 man iwlist 与 man iwconfig 了解一下语法, 然后再到前一章的无线网络小节查一查相关的用法,就了解了啦! ^_^

    5.1.5 手动使用 DHCP 自动取得 IP 参数: dhclient

    如果你是使用 DHCP 协议在局域网络内取得 IP 的话,那么是否一定要去编辑 ifcfg-eth0 内的 BOOTPROTO 呢? 嘿嘿!有个更快速的作法,那就是利用 dhclient 这个指令~因为这个指令才是真正发送 dhcp 要求工作的程序啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:

    1. [root@www ~]# dhclient eth0

    够简单吧!这样就可以立刻叫我们的网络卡以 dhcp 协议去尝试取得 IP 喔!


    原文: https://wizardforcel.gitbooks.io/vbird-linux-server-3e/content/27.html