📄 0140networkcommand.htm
字号:
</span>
</div>
<!-- 本文的正式部分 -->
<hr /><a NAME="network_setup"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">网路参数设定指令∶</span><br />
<div class=block1>
任何时刻如果你想要做好你的网路参数设定,包括 IP 参数、路由参数与无线网路等等,
就得要了解底下这些相关的指令才行!其中以 route 及 ip 这两支指令算是较重要的喔! ^_^
当然,比较早期的用法,我们都是使用 ifconfig 的啦!<br />
<ul>
<li><span class=text_import1>ifconfig</span>∶查询、设定网路卡与 IP 网域等相关参数;
<li><span class=text_import1>ifup, ifdown</span>∶这两个档案是 script ,透过更简单的方式来启动网路介面;
<li><span class=text_import1>route</span>∶查询、设定路由表 (route table)
<li><span class=text_import1>ip</span>∶复合式的指令,可以直接修改上述提到的功能;</ul>
<hr /><a NAME="network_setup_ip"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">ifconfig, ifup,
ifdown</span><br />
<div class=block2>
这三个指令的用途都是在启动网路介面,不过, ifup 与 ifdown 仅能就 /etc/sysconfig/network-scripts
内的 ifcfg-ethx (x 为数字) 进行启动或关闭的动作,并不能直接修改网路参数,除非手动调整
ifcfg-ethx 档案才行。至于 ifconfig 则可以直接手动给予某个介面 IP 或调整其网路参数!
底下我们就分别来谈一谈先!<br /><br />
<hr><li><a name="ifconfig"></a><span class=text_import1>ifconfig</span><br />
<div class=block2>
ifconfig 主要是可以手动的启动、观察与修改网路介面的相关参数,可以修改的参数很多啊,
包括 IP 参数以及 MTU 等等都可以修改,他的语法如下∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ifconfig {interface} {up|down}</span> <span class=term_say><== 观察与启动介面</span>
[root@linux ~]# <span class=term_command>ifconfig interface {options} </span> <span class=term_say><== 设定与修改介面</span>
<span class=term_say>参数∶
interface∶网路卡介面代号,包括 eth0, eth1, ppp0 等等
options ∶可以接的参数,包括如下∶
up, down ∶启动 (up) 或关闭 (down) 该网路介面(不涉及任何参数)
mtu ∶可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)
netmask ∶就是子遮罩网路;
broadcast∶就是广播位址啊!
范例∶</span>
<span class=term_hd>范例一∶观察所有的网路介面(直接输入 ifconfig)</span>
[root@linux ~]# <span class=term_command>ifconfig</span>
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
</pre></td></tr></table>
一般来说,<span class=text_import2>直接输入 ifconfig 就会列出目前已经被启动的卡</span>,
不论这个卡是否有给予 IP ,都会被显示出来。而<span class=text_import2>如果是输入 ifconfig eth0 ,
则会秀出这张介面的相关资料,而不管该介面是否有启动</span>。所以如果您想要知道某张网路卡的
Hardware Address,直接输入『 ifconfig "网路介面代号" 』即可喔! ^_^!
至于上表出现的各项资料是这样的(资料排列由上而下、由左而右)∶<br />
<ul>
<li><span class=text_import1>eth0</span>∶就是网路卡的代号,也有 lo 这个 loopback ;</li>
<li><span class=text_import1>HWaddr</span>∶就是网路卡的硬体位址,俗称的 MAC 是也;</li>
<li><span class=text_import1>inet addr</span>∶IPv4 的 IP 位址,后续的 Bcase, Mask 分别代表的是
Broadcast 与 netmask 喔!</li>
<li><span class=text_import1>inet6 addr</span>∶是 IPv6 的版本的 IP ,我们没有使用,所以略过;</li>
<li><span class=text_import1>MTU</span>∶就是
<a href="0110network_basic.php#protocol_mtu">MTU</a> 啊!</li>
<li><span class=text_import1>RX</span>∶那一行代表的是网路由启动到目前为止的封包接收情况,
packets 代表封包数、errors 代表封包发生错误的数量、 dropped
代表封包由于有问题而遭丢弃的数量等等</li>
<li><span class=text_import1>TX</span>∶与 RX 相反,为网路由启动到目前为止的传送情况;</li>
<li><span class=text_import1>collisions</span>∶代表封包碰撞的情况,如果发生太多次,
表示您的网路状况不太好;</li>
<li><span class=text_import1>txqueuelen</span>∶代表用来传输资料的缓冲区的储存长度;</li>
<li><span class=text_import1>RX bytes, TX bytes</span>∶总传送、接收的位元组总量</li>
<li><span class=text_import1>Interrupt, Memory</span>∶网路卡硬体的资料, IRQ 岔断与记忆体位址;</li>
</ul>
透过观察上述的资料,大致上可以了解到您的网路情况,尤其是那个 RX, TX 内的 error 数量,
以及是否发生严重的 collision 情况,都是需要注意的喔! ^_^<br />
<table class="term"><tr><td class="term"><pre>
<span class=term_hd>范例二∶暂时修改网路介面</span>
[root@linux ~]# <span class=term_command>ifconfig eth0 192.168.100.100</span>
<span class=term_say># 如果不加任何其他参数,则系统会依照该 IP 所在的 class 范围,
# 自动的计算出 netmask 以及 network, broadcast 等 IP 参数;</span>
[root@linux ~]# <span class=term_command>ifconfig eth0 192.168.100.100 netmask 255.255.255.128 \</span>
> <span class=term_command>mtu 8000 </span>
<span class=term_say># 设定网路介面,同时设定 MTU 的数值!</span>
[root@linux ~]# <span class=term_command>ifconfig eth0 mtu 9000</span>
<span class=term_say># 仅修改该介面的 MTU 数值,其他的保持不动!</span>
[root@linux ~]# <span class=term_command>ifconfig eth0:0 192.168.50.50</span>
<span class=term_say># 仔细看那个介面, eth0:0 喔!那就是在该网路介面上,再模拟一个网路介面,
# 亦即是在一张网路卡上面设定多个 IP 的意思啦!</span>
[root@linux ~]# <span class=term_command>ifconfig</span>
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
<span class=term_say># 仔细看,是否与硬体有关的资讯都相同啊!没错!因为是同一张网卡嘛!</span>
[root@linux ~]# <span class=term_command>ifconfig eth0:0 down</span>
<span class=term_say># 关掉 eth0:0 这个介面。如果想要启动 eth1 ,并且不给予任何网路参数,
# ifconfig eth1 up 就可以达到了!</span>
[root@linux ~]# <span class=term_command>/etc/init.d/network restart</span>
<span class=term_say># 刚刚设定的资料全部失效,会以 ifcfg-ethx 的设定为主!</span>
</pre></td></tr></table>
呵呵!使用 ifconfig 可以暂时手动来设定或修改某个介面卡的相关功能,
并且也可以透过 eth0:0 这种虚拟的网路介面来设定好一张网路卡上面的多个 IP 喔!
手动的方式真是简单啊!并且设定错误也不打紧,因为我们可以利用
<span class=text_import2>/etc/init.d/network restart</span>
来重新启动整个网路介面,那么之前手动的设定资料会全部都失效喔!另外,
要启动某个网路介面,但又不让他具有 IP 参数时,直接给他
<span class=text_import2>ifconfig eth0 up</span> 即可!
这个动作<span class=text_import2>经常在无线网卡当中会进行</span>,
因为我们必须要启动无线网卡让他去侦测 AP 存在与否啊!<br /><br />
</div>
<hr><li><a name="ifup"></a><span class=text_import1>ifup, ifdown</span><br />
<div class=block2>
即时的手动修改一些网路介面参数,可以利用 ifconfig 来达成,如果是要直接以设定档,
亦即是在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等档案的设定参数来启动的话,
那就得要透过 ifdown 或 ifup 来达成了。<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ifup {interface}</span>
[root@linux ~]# <span class=term_command>ifdown {interface}</span>
[root@linux ~]# <span class=term_command>ifup eth0</span>
</pre></td></tr></table>
ifup 与 ifdown 真是太简单了!这两支程式其实是 script 而已,他会直接到
/etc/sysconfig/network-scripts 目录下搜寻对应的设定档,例如
ifup <span class=text_import1>eth0</span> 时,他会找出
ifcfg-<span class=text_import1>eth0</span> 这个档案的内容,然后来加以设定。
关于 ifcfg-eth0 的设定则请参考前一章<a href="0130internet_connect.php">连上 Internet</a>
的说明。<br /><br />
不过,由于这两支程式主要是搜寻设定档 (ifcfg-ethx) 来进行启动与关闭的,
所以在使用前请确定 ifcfg-ethx 是否真的存在于正确的目录内,否则会启动失败喔!
另外,<span class=text_import2>如果以 ifconfig eth0 .... 来设定或者是修改了网路介面后,
那就无法再以 ifdown eth0 的方式来关闭了</span>!因为 ifdown 会分析比对目前的网路参数与 ifcfg-eth0
是否相符,不符的话,就会放弃该次动作。因此,使用 ifconfig 修改完毕后,应该要以
ifconfig eth0 down 才能够关闭该介面喔!<br /><br />
</div>
</div>
<hr /><a NAME="route"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">路由修改 route</span><br />
<div class=block2>
我们在<a href="0110network_basic.php">网路基础</a>的时候谈过关于路由的问题,
两部主机之间一定要有路由才能够互通 TCP/IP 的协定,否则就无法进行连线啊!
一般来说,只要有网路介面,该介面就会产生一个路由,例如在鸟哥实验室内部的主机有一个 eth0 及 lo ,
所以∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>route [-nee]</span>
[root@linux ~]# <span class=term_command>route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]</span>
[root@linux ~]# <span class=term_command>route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]</span>
<span class=term_say>观察的参数∶
-n ∶不要使用通讯协定或主机名称,直接使用 IP 或 port number;
-ee ∶使用更详细的资讯来显示
增加 (add) 与删除 (del) 路由的相关参数∶
-net ∶表示后面接的路由为一个网域;
-host ∶表示后面接的为连接到单部主机的路由;
netmask ∶与网域有关,可以设定 netmask 决定网域的大小;
gw ∶gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
dev ∶如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
</span>
<span class=term_hd>范例一∶单纯的观察路由状态</span>
[root@linux ~]# <span class=term_command>route -n</span>
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
<span class=term_write>0.0.0.0 192.168.10.30 0.0.0.0</span> UG 0 0 0 eth0
[root@linux ~]# <span class=term_command>route</span>
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -