手动/自动设定与启动/关闭 IP 参数: ifconfig, ifup, ifdown
ifconfig
ifconfig 主要是可以手动的启动、观察与修改网络接口的相关参数,可以修改的参数很多啊,包括 IP 参数以及 MTU 等等都可以修改,他的语法如下:
一般来说,直接输入 ifconfig 就会列出目前已经被启动的卡,不论这个卡是否有给予 IP,都会被显示出来。而如果是输入 ifconfig eth0,则仅会秀出这张接口的相关数据, 而不管该接口是否有启动。所以如果你想要知道某张网络卡的 Hardware Address,直接输入『 ifconfig "网络接口代号" 』即可喔! ^_^!至于上表出现的各项数据是这样的(数据排列由上而下、由左而右):
eth0:就是网络卡的代号,也有 lo 这个 loopback ;
HWaddr:就是网络卡的硬件地址,俗称的 MAC 是也;
inet addr:IPv4 的 IP 地址,后续的 Bcast, Mask 分别代表的是 Broadcast 与 netmask 喔!
inet6 addr:是 IPv6 的版本的 IP ,我们没有使用,所以略过;
RX:那一行代表的是网络由启动到目前为止的封包接收情况, packets 代表封包数、errors 代表封包发生错误的数量、 dropped 代表封包由于有问题而遭丢弃的数量等等
TX:与 RX 相反,为网络由启动到目前为止的传送情况;
collisions:代表封包碰撞的情况,如果发生太多次, 表示你的网络状况不太好;
txqueuelen:代表用来传输数据的缓冲区的储存长度;
RX bytes, TX bytes:总接收、发送字节总量
ifup, ifdown
实时的手动修改一些网络接口参数,可以利用 ifconfig 来达成,如果是要直接以配置文件, 亦即是在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等档案的设定参数来启动的话, 那就得要透过 ifdown 或 ifup 来达成了。
路由修改: route
一般来说,只要有网络接口, 该接口就会产生一个路由,所以我们安装的主机有一个 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) 来转递封包;
net.qiang@hotmail.com
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:这个路由传递封包的接口。
网络参数综合指令: ip
无线网络: iwlist, iwconfig
这两个指令你必须要有无线网卡才能够进行喔!这两个指令的用途是这样的:
iwlist:利用无线网卡进行无线 AP 的侦测与取得相关的数据;
iwconfig:设定无线网卡的相关参数。
手动使用 DHCP 自动取得 IP 参数: dhclient
如果你是使用 DHCP 协议在局域网络内取得 IP 的话,那么是否一定要去编辑 ifcfg-eth0 内的 BOOTPROTO 呢? 嘿嘿!有个更快速的作法,那就是利用 dhclient 这个指令~因为这个指令才是真正发送 dhcp 要求工作的程序啊!那要如何使用呢?很简单!如果不考虑其他的参数,使用底下的方法即可:
[root@www ~]# dhclient eth0
够简单吧!这样就可以立刻叫我们的网络卡以 dhcp 协议去尝试取得 IP 喔!
网络侦错与观察指令
两部主机两点沟通: ping
这个 ping 是很重要的指令,ping 主要透过 ICMP 封包 来进行整个网络的状况报告,当然啦,最重要的就是那个 ICMP type 0, 8 这两个类型, 分别是要求回报与主动回报网络状态是否存在的特性。要特别注意的是, ping 还是需要透过 IP 封包来传送 ICMP 封包的, 而 IP 封包里面有个相当重要的 TTL 属性,这是很重要的一个路由特性。
ping 最简单的功能就是传送 ICMP 封包去要求对方主机回应是否存在于网络环境中,上面的响应消息当中,几个重要的项目是这样的:
64 bytes:表示这次传送的 ICMP 封包大小为 64 bytes 这么大,这是默认值, 在某些特殊场合中,例如要搜索整个网络内最大的 MTU 时,可以使用 -s 2000 之类的数值来取代;
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
察看本机的网络联机与后门: netstat
如果你觉得你的某个网络服务明明就启动了,但是就是无法造成联机的话,那么应该怎么办? 首先你应该要查询一下自己的网络接口所监听的端口口 (port) 来看看是否真的有启动,因为有时候屏幕上面显示的 [OK] 并不一定是 OK 啊!
我们先来谈一谈关于网络联机状态的输出部分,他主要是分为底下几个大项:
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:状态栏,主要的状态含有:
o ESTABLISED:已建立联机的状态;
o SYN_SENT:发出主动联机 (SYN 标志) 的联机封包;
o SYN_RECV:接收到一个要求联机的主动联机封包;
o FIN_WAIT1:该插槽服务(socket)已中断,该联机正在断线当中;
o FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封包;
o TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束;
o LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。
基本上,我们常常谈到的 netstat 的功能,就是在观察网络的联机状态了,而网络联机状态中, 又以观察『我目前开了多少的 port 在等待客户端的联机』以及 『目前我的网络联机状态中,有多少联机已建立或产生问题』最常见。
你可以发现很多的网络服务其实仅针对本机的 lo 开放而已,因特网是连接不到该埠口与服务的。 而由上述的数据我们也可以看到,启动 port 111 的,其实就是 rpcbind 那只程序,那如果想要关闭这个埠口, 你可以使用 kill 删除 PID 969,也可以使用 killall 删除 rpcbind 这个程序即可。如此一来, 很轻松的你就能知道哪个程序启动了哪些端口口啰!
看到上头的特殊字体吧?那代表目前已经建立联机的一条网络联机,他是由远程主机 192.168.1.101 启动一个大于 1024 的埠口向本地端主机 192.168.1.100 的 port 22 进行的一条联机, 你必须要想起来的是:『Client 端是随机取一个大于 1024 以上的 port 进行联机』,此外『只有 root 可以启动小于 1024 以下的 port 』