Linux常用的网络指令-linux鸟哥的私房菜服务器篇05(阅读笔记)

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

    ifconfig    查询、设定路由与IP网域等相关参数

    ifup,ifdown     使用/etc/sysconfig/network-scrips/底下对应的文件的设定启动某个网络接口

    route    查询、设定路由表

    ip    复合式的指令,可以替代上述所有功能

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

        ifconfig

        范例一:观察所有网络接口(ifconfig)

            # ifconfig        ----列出目前所有启动的网络接口

        范例二:暂时修改网络接口。给与eth0一个192.168.100.100/24的参数

            # ifconfig eth0 192.168.100.100        ----系统会依照IP所在的class范围自动计算出子网掩码

            # ifconfig eth0 192.168.100.100 netmask 255.255.255.0 mtu 8000        ----也可以自定义子网掩码

            # ifconfig eth0 mtu 9000        ----就修改NTU,其它保持不动

            # ifconfig eth0:0 192.168.50.50        ----在一张实体网卡上仿真出一个网络接口(一张网卡可以有多个IP)

            # ifconfig eth0:0 down        ----关闭eth0上仿真出的第一个网络接口,不影响eth0

        范例三:将手动的处理全部取消,使用原有的设定值重建网络参数

            # /etc/init.d/network restart        ----刚刚设定的数据全部失效,会以ifcg-ethX设定为主

        ifup,ifdown

            # ifup eth0        ----根据配置文件的设定启动eth0这个网络接口

            # ifdown eth0        ----如果配置文件被修改了将无法用法这个来关闭,因为这个程序会比对启动的eht0的设定与内存中当前的状态,不相同则不执行关闭动作(可以通过ifconfig关闭)

    5.1.2 路由修改

 route    两部主机间一定要有路由才能够互通TCP/IP协议,否则就无法联机

            -n:    不要使用通讯协议或主机名,直接使用IP或port number

            -ee:    使用更加详细的信息来显示

            (add/del路由的相关参数)

            -net:    表示后面接的路由为一个网域

            -host:    表示后面接的为连接到但不主机的路由

            -netmask:    与网域有关,可以设定netmask决定网域的大小

            gw:    gateway的简写,后续接的是IP的数值,与dev不同

            dev:    如指定由哪一块网卡联机出去,后面接eth0d

        范例一:单纯地观察路由状态

            注意:路由表每一条都对应一个存在的网域,罗列顺序是小网域->大网域->预设路由

            # route -n        ----主机名用IP替代

            # route        ----预设会试图找出IP的主机名,因此会较上一个指令慢一点

            ---------------------------------------------------------------------------------------

            | Destination:    这个路由的network;

            | Gateway:    通过哪个网关可以到达这个网域,如果显示0.0.0.0表示透过局域网的MAC直接传送

            | Flags:      

            |            U:    该路由是启动的(route is up)

            |            H:    目标是一部主机而非网域(target is a host)

            |            G:    需要透过外部的主机来转递封包,即需要通过网关(use gateway)

            |            R:    使用动态路由时,恢复路由信息的旗标(reinstate route for dynamic routing)

            |            D:    已经由服务或转port功能设定为动态路由

            |            M:    路由已经被修改了

            |            !:    这个路由将不会被接受(用来抵挡不安全的网域)

            | lface:    这个路由转递封包的接口

            -----------------------------------------------------------------------------------------

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

            注意:添加的路由信息的网关必须是能直接使用MAC互通的

            # route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0        ----删掉这个网域,需要将路由上出现的参数都写入

            # route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0        ----增加一条路由

    5.1.3 网络参数综合指令:ip

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

            范例一:显示网络接口信息

            # ip link show         ----显示所有接口信息,相当于ifconfig

            # ip -s link show eht0        ----显示eht0这个网卡的详细信息

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

            # ip link set eth0 up    ----启动eth0这个网络接口

            # ip link set eth0 down        ----关闭这个接口

            # ip link set eht0 mtu 1000         ----更改eth0的MTU的值,达到1000bytes

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

            # ip link set eth0 down        ----先关闭eth0这个接口

            # ip link set eth0 name vbird        ----重新设定这个网卡的代号(为了避免有问题,最好别改)

            # ip link show        ----观察一下

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

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

            # ip address show

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

            # ip address add 192.168.50.50/24 broadcast + dev eht0 label eth0:vbird

            # ip address show eth0        ----看看有没有新增那个新的接口

            # ifconfig        ----这个指令当然也能够看到

            # ip address del 192.168.50.50/24 dev eth0        ----删除就比较简单

        3. 关于路由的相关的设定

            范例一:显示目前的路由资料

            # ip route show        ----显示目前的路由资料,proto(此路由的路由协议)、scope(路由的范围)

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

            # ip route add 192.168.5.0/24 dev eth0        ----针对本机所在的网域设定好路由,不需要透过router

            # ip route show        ----看看是否新增

            范例三:增加可以通往外部的路由

            # ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0        ----via:从那个网关出去,不一定需要,dev:由哪个装置出去

            范例四:增加预设路由

            # ip route add default via 192.168.1.254 dev eth0        ----系统只需要一个预设路由就可以

            范例五:删除路由

            # ip route del 192.168.10.0/24

            # ip route del 192.168.5.0/24

    5.1.4 无线网络

        iwlist    利用无线网卡进行无线AP的侦测与取得相关的数据

        iwconfig    设定无线网卡的相关参数

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

        # dhclient eth0        ----立即叫我们的网络卡以dhcp协议去尝试取得IP

5.2    网络侦错与观察指令

    5.2.1 两部主机两点沟通:ping,用ping追踪路径中的最大MTU数值

        范例一:侦测一下168.95.1.1这部DNS主机是否存在

            ping -c 3 168.95.1.1        ----侦测一下168.95.1.1这不DNS主机是否存在

            # vim /root/bin/ping.sh        ----用ping侦测整个网域的主机名的响应。每部主机的侦测仅等待1秒,也仅侦测一次【SHEEL 7】

        范例二:找出最大的MTU数值

            注意:-s 后指定的大小不包括IP封包表头的20bytes以及ICMP封包表头的8bytes,因此如果要发送1500bytes的ICMP封包,-s后跟的应该是1472 bytes,常见接口的MTU预设值

            -------------------------------------------------------------

            |    网络接口                  |      MTU    (byte)                        |

            -------------------------------------------------------------

            |    Ethernet                  |      1500                                      |

            |    PPPoE                     |      1492                                     |

            |    Dial-up(Modem)    |      576                                        |

            -------------------------------------------------------------

            # ping -c 2 -s 1000 -M do 192.168.1.254        ----发送ICMP封包2个,每个8000bytes,封包不能重新封包与打包(如果有响应,表示这个封包可以接受,否则表示这个封包太大了)

            # ping -c 2 -s 8000 -M do 192.168.1.254        ----本地端MTU设定大小为1500,所以这个指令会出错

    5.2.2 两主机各节点分析:traceroute

        traceroute    [选项与参数]    IP

        ------------------------------------------------------------------------------------------------------------------

        |选项与参数:

        |    -n:    不进行主机名的解析,单纯使用IP。速度较快

        |    -U:    使用UDP的port 33434来进行侦测,这是预设的侦测协议

        |    -I:    使用ICMP的方式进行侦测

        |    -T:    使用TCP进行侦测,一般使用port 80(因为利用ICMP和UDP的攻击太多,用户TCP侦测会顺利一些)

        |    -w:    若对方在几秒内没有回声就宣告不治,预设5秒

        |    -p [port]:    如果不想使用UDP或TCP的预设端口,可以通过这个参数修改

        |    -i [装置]:    主机上网络接口很多是,用这个参数指定网络接口

        |    -g [路由]:    [路由]指的是网关的IP

        ------------------------------------------------------------------------------------------------------------------

        范例一:侦测本机到yahoo的各节点联机状态

            # traceroute -n tw.yahoo.com        ----针对欲连接的目的地之间的所有节点进行UDP的回声等待,并侦测恢复的时间,每个节点侦测三次,回传***代表这个节点设置了防护措施,仅支持转递封包,不支持各种侦测

            # traceroute -w 1 -n -T tw.yahoo.com        ----回声等待仅1秒,不解析主机名,使用TCP封包

    5.2.3 查看本机的网络联机与后门:netstat  

        # netstat -[antulpc]        ----与网络接口有关的参数

        # netstat -[rn]        ----与路由有关的参数

        ------------------------------------------------------------------------------------------------------------------

        |与路由有关的参数说明:

        |    -r:    列出路由表(route tasble),功能如同route这个指令

        |    -n:    不使用主机名与服务名称,使用IP与port number,如同route -n

        |与网络接口有关的参数说明:

        |    -a:    列出所有的联机状态,包括tcp/udp/unix socket

        |    -t:    仅列出TCP封包的联机状态

        |    -u:    仅列出UDP封包的联机

        |    -l:    仅列出有在监听的服务之网络状态

        |    -p:    列出PID与program的档名

        |    -c:    可以设定几秒钟后自动更新一次,例如-c 5每五秒更新一次网络的状态的显示

        ------------------------------------------------------------------------------------------------------------------

        范例一:列出目前的路由表状态

            # netstat -rn       <==># route -n         ----不解析主机名和服务名称

        范例二:列出目前所有的网络联机状态,使用IP与port number

            # netstat -an

            ---------------------------------------------------------------------------------------------------------------

            |    Proto:    该联机的封包协议,主要为TCP/IP等封包

            |    Recv-Q:    非由用户程序连接所复制而来得总bytes数

            |    Send-Q:    由远程主机所传送过来且不具有ACK标志的总bytes数,也就说主动联机SYN或其他标志的封包所占的bytes

            |    Local Address:    本地端的地址,可以是IP也可以是主机名

            |    Foreign Address:    远程主机的IP与端口

            |    stat:    状态栏

            |            ESTABLISED:    已建立联机的状态

            |            SYN_SENT:    发动主动联机的联机封包

            |            SYN_RECV:    接收到一个要求联机的主动联机封包

            |            FIN_WAIT1:    该插槽服务(socket)已中断,该联机正在断线中

            |            FIN_WAIT2:    该联机已挂断,但正在等待对方主机响应短线确认的封包

            |            TIME_WAIT:    该联机已挂断,但socket还在网络上等待结束

            |            LISTEN:    通常用在服务的监听port!可使用-l参数查阅

            -------------------------------------------------------------------------------------------------------------

        范例三:显示目前已经启动的网络服务

            注意:服务名称与端口的对应在/etc/services这个档案中设定

            # netstat -tulnp

    5.2.4 侦测主机名与IP对应:host,nsloopup

            host  [-a] hostname [server]        这个指令可以查出某个主机名的IP

                ------------------------------------------------------------------------------------

                |    -a:    列出该主机详细的各项主机名设定数据

                |    [service]:    可以使用/etc/resolv.conf设定的DNS以外的DNS服务器IP来查询

                ------------------------------------------------------------------------------------

            范例一:列出tw.yahoo.com的IP

                # host tw.yahoo.com        ----使用/etc/resolv.conf设定的DNS查询IP

                # host tw.yahoo.com 168.95.1.1        ----使用指定的DNS 168.95.1.1查询yahoo的IP

            nslookup [-query=[type]] [hostname|IP]

                ---------------------------------------------------------------

                |    -query=[type]:    查询的类型

                ---------------------------------------------------------------

            范例一:找出www.google.com的IP

                # nslookup www.google.com

            范例二:找出168.95.1.1的主机名

                # nslookup 168.95.1.1

5.3    远程联机指令与实施通讯软件

    5.3.1 终端机与BBS联机:telnet

        telnet [host|IP [port]]    早期远程连接工具,问题是数据传送使用明码,没有加密

        范例一:连结到台湾相当热门的PPT BBS站ptt.cc

            # yum install telnet        ----默认没有安装这个软件

            # telnet ptt.cc        ----用telnet连接到BBS

        范例二:侦测本机端110这个port是否正确而启动

            # telnet localhost 110

            # telnet localhost 25        ----预设port 25是本机接口所提供的电子邮件服务

    5.3.2 FTP联机软件:ftp,lftp(自动化脚本)

        ftp [host|ip] [port]        处理FTP服务器的下载数据

            范例一:联机到昆山科大看看

                # yum install ftp

                # ftp ftp.ksu.edu.tw        ----登录到昆山科大,预设server port是21

                220-Only anonymous FTP is allowed here        ----这个FTP仅支持匿名

                Name(ftp.ksu.edu.tw:root): anonymous       ----使用匿名登录

                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软件的使用

                # ftp hostname 318        ----键入FTP服务器开启318端口,可以这样联机 

            lftp [-p port] [-u user[,pass]] [host|IP]    比单纯地ftp好用一些

                # lftp -f filename

                # lftp -c "commands"

                    --------------------------------------------------------------

                    |选项与参数:

                    |    -p:    后面可以直接接上远程FTP主机提供的port

                    |    -u:    后面接上账号和密码就能够远程连上主机了,没有密码会默认使用anonymous尝试匿名登录

                    |    -f:    可以将指令写入脚本中,这样可以帮助进行shell scripts的自动化处理

                    |    -c:    后米娜直接加上所需要的指令

                    -----------------------------------------------------------------

                范例一:利用lftp登入昆山科大的FTP服务器

                    # yum install lftp

                    # lftp ftp.ksu.edu.tw

                    lftp ftp.ksu.edu.tw:~>|        ----登入成功

                范例二:取下昆山科大FTP网站下的/pub/CentOS/RPM-GPG*

                    # mkdir lftp;cd ;ftp

                    # vim lftp.ksu.sh_1        ----第一种脚本,使用脚本配合lftp【SHEEL 8】

                    # lftp -f lftp.ksu.sh_1        ----第一种脚本的运行方式(外部运行)

                    # ls        ----

                    # vim lftp.ksu.sh_2         ----第二种脚本,直接将要处理的动作加入lftp指令中【SHEEL 9】

                    # sh lftp.ksu.sh_2        ----第二种脚本的启动方式

    5.3.3 图形接口的实时通讯软件:pidgin(gaim的延伸)
5.4 
    文字接口网页浏览

    5.4.1 文字浏览器:links

         links [option] [URL]

            ----------------------------------------------------------

            |选项与参数:

            |    -anoymous [0|1]:    是否使用匿名登录

            |    -dump [0|1]:    是否将网页的数据直接输出到standard out 而非links软件功能

            |    -dump_charset:    想要透过dump输出到屏幕的语系编码,big5使用cp950

            ------------------------------------------------------------

            范例一:浏览呢Linux Kernel网站

                # links http://www.kernel.org

            范例二:浏览本机上面的网页档案

                # links /usr/share/doc/HTML/index.html

            范例三:抓取内容

                # links -dump http://tw.yahoo.com > yahoo.html        ----将这个网页的内容整个抓下来存储

                # links -dump http://some.siet.name/web.php?name=usr$password=pw > testfile

    5.4.2 文字接口下载器:wget

         wget [option] [网址]    取得网页数据

            -----------------------------------------------------------------------------------------

            |选项与参数:

            |    --http-user=username

            |    --http-passwd=passwd        ----若联机的网站有账号和密码的需求

            |    --quite:    不要显示wget在抓取数据时显示讯息

            ----------------------------------------------------------------------------------------

            范例一:下载2.6.39的核心

                # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2

                # vim /etc/wgettrc        ----设定代理服务器

               #http_proxy = http://proxy.yoyodyne.cm:18023/

                #ftp_proxy = http://proxy.yoyodyne.com:18023/

                #use_proxy = on

                改为

               http_proxy = http://proxy.ksu.edu.tw:3128/

                use_proxy = on

5.5    封包撷取功能

    5.5.1 文字接口封包撷取器:tcpdump

        tcpdump [-AennqX] [-i 接口] [-w 储存档名] [-c 次数] [-r 档案]   抓取封包的黑客软件

            ------------------------------------------------------------------------

            |选项与参数:

            |    -A:    封包的内容以ASCLL显示,通常用来捉取WWW网页封包资料

            |    -e:    使用数据链路层(OSI第二层)的MAC封包数据来显示

            |    -nn:    直接以IP及port number显示,而非主机名与服务名称

            |    -q:    仅列出较为简短的封包信息,每一行的信息比较精简

            |    -X:可以列出十六进制(hex)以及ASCLL的封包内容,对于监听封包内容很有用

            |    -i:    后面接要【监听】的网络接口,例如eth0,lo,ppp0等等的界面

            |    -w:    将监听的封包数据存储下来,后面接档名

            |    -r:    将已经存在的档案(-w制作的)将封包数据读取出来

            |    -c:    监听的封包数,如果没有这个参数,tcpdump会持续不断地监听,知道【ctrl+c】

            |针对特定的封包数据格式或某些通讯协议或IP来源进行封包的抓取:

            |    host foo 

            |    或者

            |    host 127.0.0.1        ----针对单部主机

            |    net 192.168        ----针对某个网域

            |    src    host 127.0.0.1 dst net 192.168        ----同事加上来源与目标的限制

            |    tcp port 21        ----针对通讯协议和端口

            ---------------------------------------------------------------------------

            范例一:监听网络卡的封包

                # tcpdump -i eth0 -nn        ----以IP与port number 桌下eth0这个网络卡上的封包,持续3秒

                17:01:47.362139 IP 192.168.1.100.22 > 192.168.1.101.1937:Flag [P.],  seq 196:472,  ack 1.

               (该封包是由192.168.1.100传到192.168.1.101,透过的端口是22到1937,使用的是PUSH的旗标,而不是SYN之类的主动联机标志。)

             【ctrl+c】结束抓取

                # tcpdump -i eth0 -nn port 21        ----仅专区eht0这个网卡的21端口的封包

                # tcpdump -i lo -nn        ----监听lo这个接口

                # ssh localhost        ----从另一个终端ssh连接本机,看看有没有监听到三次握手的过程

            范例二:用tcpdump在router上面监听明码传输的数据

                # tcpdump -i lo -nn -X 'port 21'        ----监听lo的21端口,并将监听到的封包数据以16进制:ASCALL列出

                # ftp localhost        ----tcp连接本机

            范例三:监听eth0适配器的22端口,封包来源为192.168.1.101的封包

                # tcpdump -i eth0 -nn 'port 22 and src host 192.168.1.101'

    5.5.2 图形接口封包撷取器:wireshark

            # yum install wireshark wireshark-gnome        ----yum安装图形接口

    5.5.3 人已启动TCP/IP封包的端口联机:nc,netcat

            nc    进行某些服务的检测,连接到某个端口进行沟通

                注意:如果编译nc时给与GAPING_SECURITY_HOLE的参数,这个软件还可以取得客户端的bash,有的系统将nc改名为netget(/usr/share/doc/nc-1.84/scripts/)

            # nc [-u] [IP|host] [port]   

            # nc -l [IP|host] [port]

                ------------------------------------------------------------------------------

                |    -l:    作为监听只用,亦即开启一个port来监听用户的联机

                |    -u:    不使用TCP而是使用UDP作为联机的封包状态

                ------------------------------------------------------------------------------

                范例一:与telnet类似,连接本地端的port 25查阅相关信息

                    # yum install nc

                    # nc localhost 25

                范例二:激活一个port 20000 来监听使用者的联机要求

                    # nc -l localhost 20000 &        ----启动这个端口并放在后台执行

                    # netstat -tlunp | grep nc        ----看看nc启动的这个端口的状态

                    # nc localhost 20000        ----下面就可以输入字符串了,这些输入会同事显示在服务器端

5.6    重点回顾【191】

5.7    本章习题

5.8    参考数据与延伸阅读

posted @ 2014-02-21 15:57  Neuromancer  阅读(398)  评论(0编辑  收藏  举报