ifconfig :查询、设定网络卡与 IP 网域等相关参数;
ifup, ifdown:这两个档案是 script,透过更简单的方式来启动网络接口;
route :查询、设定路由表 (route table)
ip :复合式的指令, 可以直接修改上述提到的功能;
[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:就是广播地址
# 范例一:观察所有的网络接口(直接输入 ifconfig)
[root@www ~]# ifconfig
# 范例二:暂时修改网络接口,给予 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 的意思
数据意义:
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:总接收、发送字节总量
[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 等
# 范例一:单纯的观察路由状态
[root@www ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use 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 1002 0 0 eth0
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
内容意义:
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:这个路由传递封包的接口。
# 范例二:路由的增加与删除
[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
这个指令功能很多,基本上整合了 ifconfig 与 route 这两个指令。
[root@www ~]# ip [option] [动作] [指令]
选项与参数:
option :设定的参数,主要有:
-s :显示出该装置的统计数据(statistics),例如总接受封包数等;
动作:亦即是可以针对哪些网络参数进行动作,包括有:
link :关于装置 (device) 的相关设定,包括 MTU, MAC 地址等等
addr/address :关于额外的 IP 协议,例如多 IP 的达成等等;
route :与路由有关的相关设定
iwlist:利用无线网卡进行无线 AP 的侦测与取得相关的数据;
iwconfig:设定无线网卡的相关参数。
[root@www ~]# dhclient eth0
立刻叫我们的网卡以 dhcp 协议去尝试取得 IP 。
ping 主要透过 ICMP 封包 来进行整个网络的状况报告,最重要的就是那个 ICMP type 0, 8 这两个类型, 分别是要求回报与主动回报网络状态是否存在的特性。
[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 旗标,表示封包可以在其他主机上拆包与打包
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 数值,如果你的主机与待侦测主机并不在同一个网域内, 那么 TTL 预设使用 255 ,如果是同一个网域内,那么 TTL 预设则使用 64.
time=15.4 ms:响应时间,单位有 ms(0.001秒)及 us(0.000001秒), 一般来说,越小的响应时间,表示两部主机之间的网络联机越良好!
透过 ping 传送一个大封包, 并且不许中继的路由器或 switch 将该封包重组,可追踪整个网络传输的最大 MTU 。
# 范例二:找出最大的 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 太大了。
注意,由于 IP 封包表头 (不含 options) 就已经占用了 20 bytes ,再加上 ICMP 的表头有 8 bytes ,所以当然你在使用 -s size 的时候,那个封包的大小就得要先扣除 (20+8=28) 的大小了。 因此如果要使用 MTU 为 1500 时,就得要下达『 ping -s 1472 -M do xx.yy.zz.ip 』才行!
[root@www ~]# traceroute [选项与参数] IP
选项与参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快! -U :使用 UDP 的 port 33434 来进行侦测,这是预设的侦测协议; -I :使用 ICMP 的方式来进行侦测; -T :使用 TCP 来进行侦测,一般使用 port 80 测试 -w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒 -p 埠号:若不想使用 UDP 与 TCP 的预设埠号来侦测,可在此改变埠号。 -i 装置:用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到这个参数; 举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两个 ppp,
你可以使用 -i 来选择是 ppp0 还是 ppp1 啦!
-g 路由:与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。
# 范例一:侦测本机到 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 预设使用 UDP 封包,如果你想尝试使用其他封包, 那么 -I 或 -T 可以试看看
[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 每五秒更新一次网络状态的显示;
网络联机状态的输出部分主要分为底下几个大项:
Proto:该联机的封包协议,主要为 TCP/UDP 等封包;
Recv-Q:非由用户程序连接所复制而来的总 bytes 数;
Send-Q:由远程主机所传送而来,但不具有 ACK 标志的总 bytes 数, 意指主动联机 SYN 或其他标志的封包所占的 bytes 数;
Local Address:本地端的地址,可以是 IP (-n 参数存在时), 也可以是完整的主机名。使用的格是就是『 IP:port 』只是 IP 的格式有 IPv4 及 IPv6 的差异。
Foreign Address:远程的主机 IP 与 port number
stat:状态栏,主要的状态含有:
ESTABLISED:已建立联机的状态;
SYN_SENT:发出主动联机 (SYN 标志) 的联机封包;
SYN_RECV:接收到一个要求联机的主动联机封包;
FIN_WAIT1:该插槽服务(socket)已中断,该联机正在断线当中;
FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封包;
TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束;
LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。
# 范例三:秀出目前已经启动的网络服务
[root@www ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:34796 0.0.0.0:* LISTEN 987/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 969/rpcbind
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1231/master
tcp 0 0 :::22 :::* LISTEN 1155/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 969/rpcbind
....(底下省略)....
# 上面最重要的其实是那个 -l 的参数,因为可以仅列出有在 Listen 的 port
# 范例四:观察本机上头所有的网络联机状态
[root@www ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 969/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1155/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1231/master
tcp 0 52 192.168.1.100:22 192.168.1.101:1937 ESTABLISHED 4716/0
....(底下省略)....
关于主机名与 IP 的对应中,我们主要介绍的是 DNS 客户端功能的 dig 这个指令。不过除了这个指令之外, 其实还有两个更简单的指令,那就是 host 与 nslookup。
[root@www ~]# host [-a] hostname [server]
选项与参数:
-a :列出该主机详细的各项主机名设定数据
[server] :可以使用非为 /etc/resolv.conf 的 DNS 服务器 IP 来查询。
# 范例一:列出 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
[root@www ~]# nslookup [-query=[type]] [hostname|IP]
选项与参数:
-query=type:查询的类型,除了传统的 IP 与主机名对应外,DNS 还有很多信息,
所以我们可以查询很多不同的信息,包括 mx, cname 等等,
例如: -query=mx 的查询方法!
# 范例一:找出 www.google.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
....(底下省略)....
# 范例二:找出 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.
telnet 本身的数据在传送的时候是使用明码 (原始的数据,没有加密) , 所以数据在 Internet 上面跑的时候,会比较危险一点。
[root@www ~]# telnet [host|IP [port]]
# 范例一:连结到台湾相当热门的 PTT BBS 站 ptt.cc
[root@www ~]# yum install telnet <==默认没有安装这软件
[root@www ~]# telnet ptt.cc
欢迎来到 批踢踢实业坊 目前有【100118】名使用者与您一同对抗炎炎夏日。
请输入代号,或以 guest 参观,或以 new 注册:
[高手召集令] 台湾黑客年会 暑假与你骇翻南港 http://reg.hitcon.org/hit2011
要学计算机,首选台湾大学信息训练班! http://tinyurl.com/3z42apw
[root@www ~]# ftp [host|IP] [port]
# 范例一:联机到昆山科大去看看
[root@www ~]# yum install ftp
[root@www ~]# ftp ftp.ksu.edu.tw
Connected to ftp.ksu.edu.tw (120.114.150.21).
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 16:25. Server port: 21.
220-Only anonymous FTP is allowed here <==讯息要看啊!这个 FTP 仅支援匿名
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 5 minutes of inactivity.
Name (ftp.ksu.edu.tw:root): anonymous <==鸟哥这里用匿名登录!
230 Anonymous user logged in <==嗯!确实是匿名登录了!
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <==最终登入的结果看起来是这样!
ftp> help <==提供需要的指令说明,可以常参考!
ftp> dir <==显示远程服务器的目录内容 (文件名列表)
ftp> cd /pub <==变换目录到 /pub 当中
ftp> get filename <==下载单一档案,档名为 filename
ftp> mget filename* <==下载多个档案,可使用通配符 *
ftp> put filename <==上传 filename 这个档案到服务器上
ftp> delete file <==删除主机上的 file 这个档案
ftp> mkdir dir <==建立 dir 这个目录
ftp> lcd /home <==切换『本地端主机』的工作目录
ftp> passive <==启动或关闭 passive 模式
ftp> binary <==数据传输模式设定为 binary 格式
ftp> bye <==结束 ftp 软件的使用
lftp (自动化脚本):
lftp 预设使用匿名登录 FTP 服务器,可以使用类似网址列的方式取得数据, 使用上比单纯的 ftp 要好用些。此外,由于可在指令列输入账号/密码,可以辅助进行程序脚本的设计。
[root@www ~]# lftp [-p port] [-u user[,pass]] [host|IP]
[root@www ~]# lftp -f filename
[root@www ~]# lftp -c "commands"
选项与参数:
-p :后面可以直接接上远程 FTP 主机提供的 port
-u :后面则是接上账号与密码,就能够连接上远程主机了
如果没有加账号密码, lftp 默认会使用 anonymous 尝试匿名登录
-f :可以将指令写入脚本中,这样可以帮助进行 shell script 的自动处理喔!
-c :后面直接加上所需要的指令。
# 范例一:利用 lftp 登入昆山科大的 FTP 服务器
[root@www ~]# yum install lftp
[root@www ~]# lftp ftp.ksu.edu.tw
lftp ftp.ksu.edu.tw:~>
如果你想要定时的去捉下昆山科大 FTP 网站下的 /pub/CentOS/RPM-GPG* 的档案时,那么那个脚本应该要怎么写呢? 我们尝试来写写看吧!
# 使用档案配合 lftp 去处理时:
[root@www ~]# mkdir lftp; cd lftp
[root@www lftp]# vim lftp.ksu.sh
open ftp.ksu.edu.tw
cd /pub/CentOS/
mget -c -d RPM-GPG*
bye
[root@www lftp]# lftp -f lftp.ksu.sh
[root@www lftp]# ls
lftp.ksu.sh RPM-GPG-KEY-CentOS-3 RPM-GPG-KEY-CentOS-4 RPM-GPG-KEY-CentOS-6
RPM-GPG-KEY-beta RPM-GPG-KEY-centos4 RPM-GPG-KEY-CentOS-5
# 直接将要处理的动作加入 lftp 指令中
[root@www lftp]# vim lftp.ksu.sh
lftp -c "open ftp.ksu.edu.tw cd /pub/CentOS/ mget -c -d RPM-GPG* bye"
[root@www lftp]# sh lftp.ksu.sh
若为非匿名登录时,则可以使用『 open -u username,password hostname 』修改 lftp.ksu.sh 的第一行! 如果再将这个脚本写入 crontab 当中,你就可以定时的以 FTP 进行上传/下载的功能啰!
[root@www ~]# links [options] [URL]
选项与参数:
-anonymous [0|1]:是否使用匿名登录的意思;
-dump [0|1] :是否将网页的数据直接输出到 standard out 而非 links 软件功能
-dump_charset :后面接想要透过 dump 输出到屏幕的语系编码,big5 使用 cp950 喔
# 范例一:浏览 Linux kernel 网站
[root@www ~]# links http://www.kernel.org
如果是浏览 Linux 本机上面的网页档案,那就可以使用如下的方式:
[root@www ~]# links /usr/share/doc/HTML/index.html
# 透过 links 将 tw.yahoo.com 的网页内容整个抓下来储存
[root@www ~]# links -dump http://tw.yahoo.com > yahoo.html
[root@www ~]# wget [option] [网址]
选项与参数:
若想要联机的网站有提供账号与密码的保护时,可以利用这两个参数来输入喔!
--http-user=usrname
--http-password=password
--quiet :不要显示 wget 在抓取数据时候的显示讯息
更多的参数请自行参考 man wget 吧! ^_^
# 范例一:请下载 2.6.39 版的核心
[root@www ~]# wget \
> http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2
--2011-07-18 16:58:26-- http://www.kernel.org/pub/linux/kernel/v2.6/..
Resolving www.kernel.org... 130.239.17.5, 149.20.4.69, 149.20.20.133, ...
Connecting to www.kernel.org|130.239.17.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 76096559 (73M) [application/x-bzip2]
Saving to: `linux-2.6.39.tar.bz2'
88% [================================> ] 67,520,536 1.85M/s eta 7s
不必透过浏览器,只要知道网址后,立即可以进行档案的下载, 又快速又方便.
文字接口封包撷取器: tcpdump
图形接口封包撷取器: wireshark
任意启动 TCP/UDP 封包的埠口联机: nc, netcat