天天看點

Linux中的涉及網絡基本知識

Linux中的涉及網絡基本知識:

            TCP/IP:

                        實體層:

                        鍊路層:MAC  從裝置到裝置主機通信,MAC位址,IP<-->MAC(ARP/RARP)                        MTU:

                        網絡層:IP封包 從源主機到目标主機之間通信,IP位址,IP封包

                        傳輸層:從源主機程序到目标主機特定程序之間通信,TCP/UDP

                        應用層:        

            ISO/OSI:七層

                        1-4:通信

                        5-7:資源

                                    會話層

                                    表示層

                                    應用層

            TCP:有連接配接協定,建立邏輯連接配接

                        SYN, ACK, FIN, RST, PSH,URG

                        三次握手:

                                    SYN=1,ACK=0, FIN=0

                                    SYN=1,ACK=1, FIN=0

                                    SYN=0,ACK=1, FIN=0

                        四次斷開:确認通訊确實需要中斷

                        有限狀态機:

主機:TCP/IP協定棧

回顧:IPV4:私有5類位址網段:

                        A:10.0.0.0/8

                        B: 172.16.0.0/16,172.31.0.0/16

                        C: 192.168.0.0/24,192.168.255.0/24

                        D

                        E

            OSI:7 layers

                        4 :

                                    TCP, UDP                  

            tcp三次握手:

                        1次:SYN=1,ACK=0,FIN=0

                        2次:SYN=1, ACK=1,FIN=0

                        3次:SYN=0,ACK=1,FIN=0

            A --> B, B --> A

            IP首部,TCP首部

            VLAN:

Linux網絡屬性配置:

            IP/NETMASK

            路由:

                        主機路由

                        網絡路由

                        預設網關

            DNS伺服器:

                        主DNS伺服器

                        備用DNS伺服器

            主機名

            配置網絡屬性:

                        靜态配置

                        動态配置:DHCP

                                    Dynamic HostConfiguration Protocol

            配置IP:

                        使用者空間工具:ifconfig(net-tools), ip (iproute2)

                        網絡裝置服務配置檔案:/etc/sysconfig/network-scripts/

                                    主機名:/etc/resolv.conf

                        GUI/TUI

            網絡裝置的配置方式:

                        核心識别硬體裝置:驅動

                        裝置名稱:

                                    以太網:ethX

                                                eth0,eth1, eth2, ...

                                    PPP網絡:pppX

                                    loopback: 本地回環,lo

            ifconfig:

                        預設為顯示所有處于激活狀态的連接配接

                        -a

                        ifconfig IFNAME:僅顯示指定接口的資訊

                        ifconfig IFNAME ADDRESS

                                    ip/mask

                                                長格式:ifconfig IFNAMEIP netmask MASK

                                                短格式:ifconfig IFNAMEIP/MASK

            route:

                        route:顯示路由資訊

                                    -n: 數字格式的位址

                        route add

                                    -host:目标為主機

                                                -hostHOST_IP gw NEXT_HOP [dev DEVICE]

                                    -net:目标是網絡

                                                -netNET_ADDRESS gw NEXT_HOP [dev DEVICE]

                                                -net0.0.0.0: 表示目标為任意位址

                                    route add default gw GW_ADD

                        route del

                                    -hostHOST_IP

                                    -netNET_ADDRESS

            DNS伺服器位址:

                        本地解析: /etc/hosts

                        DNS伺服器解析:指定DNS伺服器位址

                        dig -t A FQDN

                                    FullQualified Domain Name

                                    www.magedu.com

                        dig -x IP:

                                    反解IP至FQDN

            使用指令配置的資訊直接送往核心(TCP/IP協定棧)并立即生效;

            IP/NETMASK:

                        配置檔案有兩類(/etc/sysconfig/network-scripts):

                                    配置IP、掩碼和網關:

                                                以太網:ifcfg-IFNAME

                                                PPP:ifcfg-pppX

                                    配置路由:route-IFNAME

                        CentOS 5:/etc/rc.d/init.d/network

                        CentOS 6:/etc/rc.d/init.d/network

                                        /etc/rc.d/init.d/NetworkManager

            /etc/rc.d/init.d/,/etc/init.d/*

                        SysV風格的腳本:多數腳本都用于控制Linux的背景程序,接受參數{start|stop|restart|status}

                        # /etc/init.d/networkstart

                        # service network start           

                        配置某服務是否開機自動運作:

                                    # chkconfigSRVNAME on|off

                        檢視哪些服務開機自動運作:

                                    # chkconfig--list

            ifcfg-IFNAME配置檔案的格式:

                    DEVICE=IFNAME: 此配置檔案所關聯到的裝置,裝置名稱要與本檔案名ifcfg-後面保持一緻;

                        BOOTPROTO={bootp|dhcp|static|none}

                        HWADDR=00:11:22:33:44:55:66:目前裝置的MAC位址;

                        NM_CONTROLLED={yes|no}: 是否接受NetworkManager服務腳本來配置此裝置;

                        ONBOOT={yes|no}: 是否在開機過程中,自動激活此接口

                        TYPE={Ethernet|Bridge}:網絡接口類型

                        UUID=

                        IPADDR=

                        NETMASK=

                        GATEWAY=

                        DNS1=

                        DNS2=

                        IPV6INIT={yes|no}

                        USERCTL={yes|no}: 是否允許普通用控制此接口

                        PEERDNS={yes|no}: 不接受DHCP伺服器指派的DNS伺服器位址

            route-IFNAME:

                        配置檔案的格式1:每行一個路由條目

                                    DESTINATIONvia NETX_HOP

                        配置檔案格式2: 每三行一個路由條目

                                    ADDRESS#=DESTINATION

                                    NETMASK#=MASK

                                    GATEWAY#=GW

            如何配置主機名:

                        hostname

                        hostname HOSTNAME

                        配置檔案:/etc/sysconfig/network

                                    HOSTNAME=主機名

            如何在一個網絡接口配置多個IP位址:

                        通過網絡接口的别名來實作:IFNAME:#

                                    ens33,ens33:0, ens33:1, ens33:2

                                    eth0,eth0:0, eth0:1

                        指令配置:立即生效

                                    ifconfigIFALIAS IP

                        配置檔案配置:别名不支援使用DHCP進行配置

                                    ifcfg-IFALIAS

                                                DEVICE=IFALIAS

                                                BOOTPROTO={static|none}

                                                IPADDR=

                                                NETMASK=

                                                ONBOOT=

                                                USERCTL=

            TUI或者GUI:

                        TUI:system-config-network-tui

                        GUI:system-config-network-gui

                        setup --> NetworkConfiguration

                        修改的結果會儲存至相應的網絡接口的配置檔案ifcfg-IFNAME,是以,不會立即生效;

            網絡管理相關的工具:

                        ping: ICMP

                                    ping[option]... IP

                                                -c#: 封包的個數

                                                -Wtimeout: 等待響應封包的逾時時長;

                        traceroute:

                                    tracerouteHOST

                                                擷取從目前主機到達目标主機所經由的所有網關;

                        mtr HOST

                        netstat: (ss)

                                    -t: tcp協定相關

                                    -u: udp協定相關

                                    -n: 顯示數字格式的位址

                                    -l: listen,顯示處于監聽狀态的連接配接

                                                -tunl

                                    -a: 所有狀态的連接配接

                                                -tan

                                    -p: 顯示會話中的程序程式名及程序号

                                    -r: routing,顯示路由表

                                                -rn

                                    名稱解析:

                                                FQDN<==> IP

                                                ServiceName <==> PORT

            顯示網絡接口裝置的屬性資訊:

                        ethtool IFNAME

                                    -S: 顯示裝置接口的統計資料

            課外任務:nmap, ncat,tcpdump

            ip指令:

                        ip link : 管理接口

                                    show[IFNAME]

                                    set IFNAME{up|down}

                                                multicast{on|off}

                                    # ifconfigIFNAME {up|down}

                                    # ifupIFNAME

                                    # ifdownIFNAME

                        ip addr: 管理協定位址

                                    ip addr{show|flush} [dev DEVICE]

                                    ip addr{add|del} ADDRESS dev DEVICE  [label IFALIAS][broadcast BCAST_ADDRESS]

                                                #ifconfig IFNAME ADDRESS broadcast BCAST_ADDRESS

                        ip route: 管理路由

                                    ip routelist

                                    ip routeflush

                                    ip route addDESTINATION [via NEXT_HOP] [src SOURCE_ADDRESS] [dev DEVICE]

                                    ip route delDESTINATION

指令總結:ifconfig, ifup,ifdown, route, netstat, ping, traceroute, mtr, ethtool, setup, dig, ip, ss

            ss:

                        -t: tcp

                        -u: udp

                        -p: process

                        -l: listening

                        -n: numeric

                        -a: all

                        -e: 擴充資訊

                        -m: 套接字相關的記憶體使用資訊

                        -o state{established,fin_wait_1, fin_wait_2, listening}

                                    '( dport=   or sport =  )'

                                    隻顯示指定狀态的連接配接,還可以指定過濾條件

【網絡資訊及設定指令Linux Network Commands】

  COMMAND DESCRIPTION    

    dhclient -v /Sudo dhclient -v -r     //let's manually release our address with -r. Let's keep the -v option in there so we can see what's going on.

    netstat -tulpn      Show Linux network ports with process ID's (PIDs)

    watch ss -stplu     Watch TCP, UDP open ports in real time with socket summary.

    lsof -i       Show established connections.

    macchanger -m MACADDR INTR      Change MAC address on KALI Linux.

    ifconfig -a 

    ifconfig eth0 192.168.2.1/24      Set IP address in Linux.

    ifconfig eth0:1 192.168.2.3/24        Add IP address to existing network interface in Linux.

    ifconfig eth0 hw ether MACADDR        Change MAC address in Linux using ifconfig.

    ifconfig eth0 mtu 1500        Change MTU size Linux using ifconfig, change 1500 to your desired MTU.

    dig -x 192.168.1.1      Dig reverse lookup on an IP address.

    host 192.168.1.1        Reverse lookup on an IP address, in case dig is not installed.

    dig @192.168.2.2 domain.com -t AXFR       Perform a DNS zone transfer using dig.

    host -l domain.com nameserver       Perform a DNS zone transfer using host.

    nbtstat -A x.x.x.x      Get hostname for IP address.

    ip addr add 192.168.2.22/24 dev eth0        Adds a hidden IP address to Linux, does not show up when performing an ifconfig.

    ip address 

    tcpkill -9 host google.com      Blocks access to google.com from the host machine.

    echo "1" > /proc/sys/net/ipv4/ip_forward        Enables IP forwarding, turns Linux box into a router - handy for routing traffic through a box.

    echo "8.8.8.8" > /etc/resolv.conf       Use Google DNS.

網絡工具

1.  ping:通過ICMP回應/回複封包來檢查遠端主機的端到端連接配接性(RTT延時,抖動,丢包)。用來檢查系統狀态和可連接配接性很不錯。

2.  phping:網絡掃描和檢測工具,可以産生ICMP/TCP/UDPping資料包。常常用于進階端口掃描,防火牆測試,手動MTU路徑發現和碎片測試。

3.  traceroute:通過TTL限定的ICMP/UDP/TCP偵測包來發現從本地主機到遠端目标主機之間的第三層轉發路徑。用來調試網絡連接配接性和路由問題。

4.  mtr:traceroute的一個變種,能根據運作時統計資料整理出每一跳的包丢失/抖動。用來評估路由路徑延時很不錯。

5.  netcat/socat:TCP/IP網絡裡的瑞士***,可以讀/寫 TCP/UDP 協定位元組流。用來調試防火牆政策和服務可用性很不錯。

6.  dig:DNS調試工具,可以生成正向查詢,反向查詢,搜尋域名伺服器,檢查CNAME,MX和其他DNS記錄。可以在偵錯的時候查詢特定的DNS伺服器。

7.  nslookup:另外一個DNS檢查/調試工具。支援所有DNS查詢和記錄。可以查詢特定DNS伺服器。

8.  dnsyo:一個DNS測試工具,通過對全世界1500個不同網絡中的大量開放解析器執行DNS查詢來測試DNS傳輸。

9.  lsof:顯示程序打開的檔案資訊(例如,普通檔案,管道或套接字)。用來監視網絡連接配接很不錯。

10.               iftop:一個基于ncurses的指令行界面應用,可以實時監視各個網絡實體接口上的網絡連接配接和帶寬占用。用來記錄霸占帶寬的應用、使用者、目的地和端口等很不錯。

11.               netstat:一個網絡統計工具,可以顯示狀态以及統計資訊,目前網絡連接配接(TCP/UDP端口,IP位址)、路由表、TX/RX traffic以及網絡協定。用來做網絡相關診斷和性能調試很不錯。

12.               tcpdump:一個常用的基于libpcap抓包庫的包偵測工具。可以按伯克利包過濾器格式定義抓包條件。

13.               tshark:另一個指令行抓包工具,和它的GUI版本Wireshark完全相容。支援1000種協定而且這個清單還在增加。用來調試、分析和儲存實時網絡封包資訊很不錯。

14.               ip:一個多功能的指令行網絡工具,是iproute2包的一部分。可以檢查和修改路由表、網絡裝置狀态以及IP隧道設定。用來檢視路由表、增加/删除靜态路由、配置網絡接口、以及調試路由問題很有用。

15.               ifup/ifdown:用來激活和關閉特定的網絡接口。經常用于重新開機整個網絡服務。

16.               autossh:一個能建立SSH連接配接并在斷線後自動重新連接配接的程式。用來建立長時間保持的穿越嚴格企業網絡的SSH隧道很有用。

17.               iperf:一個網絡測試工具,通過在發送自定義TCP/UDP資料流來衡量主機間雙向最大吞吐量。

18.               elinks/lynx:為基于指令行的伺服器環境下使用的基于文字的網頁浏覽器。

課外任務:nmap, netcat, tcpdump

Nmap(Network Mapper) is a security scanner originally written by Gordon Lyon (alsoknown by his pseudonym Fyodor Vaskovich)[1] used to discover hosts and serviceson a computer network, thus creating a "map" of the network. Toaccomplish its goal, Nmap sends specially crafted packets to the target host andthen analyzes the responses. 發現特定網段下存在hosts 

NmapExamples : nmap-sP 10.0.0.0/24  //Pingscans the network, listing machines that respond to ping.

Netcat(often abbreviated to nc) is a computer networking service for reading from andwriting to network connections using TCP or UDP. Netcat is designed to be adependable back-end that can be used directly or easily driven by otherprograms and scripts. At the same time, it is a feature-rich network debuggingand investigation tool, since it can produce almost any kind of correlation itsuser could need and has a number of built-in capabilities.

Itslist of features includes port scanning, transferring files, and portlistening, and it can be used as a backdoor.

tcpdump is a common packet analyzer that runs under the command line. It allows the user to display TCP/IP and other packets being transmitted or received over anetwork to which the computer is attached. 

查找發出ip到目的ip端口的資料包

#TCP traffic from 10.5.2.3 destined for port 3389 

tcpdump-nnvvS src 10.5.2.3 and dst port 3389