網絡總結

linux 網絡配置


linux的網絡服務是由內核提供。

網卡在內核看來就是個設備,各種網絡配置不在網卡上。各種配置都是針相應網絡管理程序使用的。

不同發行版的網絡管理工具也是不一樣(net-tools/iproute)。網絡服務的管理程序(守護進程)也是不一樣(腳本/程序)。

網絡管理工具是將用戶的設定直接傳遞給內核的網絡服務,及時有效。

很多管理工具可以及時生效,都是對內核操作,一般只有管理員有權限。修改配置用文件永久有效,但是不是及時生效,可重啟網絡服務或主機。

  • 網絡管理工具

  • 網絡配置文件

  • 網絡服務

  • 網卡別名


centos網絡管理工具

net-tools

[root@centos7 ~]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@centos7 ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.17.20131004git.el7.x86_64
[root@centos7 ~]# rpm -ql net-tools

/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
/sbin/slattach

iproute 出現的目的是代替net-tools

/usr/sbin/arpd
/usr/sbin/bridge
/usr/sbin/cbq
/usr/sbin/ctstat
/usr/sbin/genl
/usr/sbin/ifcfg
/usr/sbin/ifstat
/usr/sbin/ip
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/routef
/usr/sbin/routel
/usr/sbin/rtacct
/usr/sbin/rtmon
/usr/sbin/rtpr
/usr/sbin/rtstat
/usr/sbin/ss
/usr/sbin/tc

命令行下的字符界面管理工具

setuptool

命令 setup

/e> tc/setuptool.d/98netconfig

/etc/setuptool.d/98system-config-authentication
/etc/setuptool.d/98system-config-display
/etc/setuptool.d/98system-config-keyboard
/etc/setuptool.d/99Xconfigurator
/etc/setuptool.d/99authconfig
/etc/setuptool.d/99kbdconfig
/etc/setuptool.d/99mouseconfig
/etc/setuptool.d/99ntsysv
/etc/setuptool.d/99printconf-tui
/etc/setuptool.d/99sndconfig
/etc/setuptool.d/99system-config-firewall-tui
/etc/setuptool.d/99system-config-network-tui
/etc/setuptool.d/99timeconfig
/usr/bin/setup
/usr/sbin/setup


centos網絡配置文件

配置文件可手動修改(vim)也可以使用命令修改。

可修改配置文件的命令

centos6:system-config-network(setup);cenos7:nmtul

接口配置文件

路由配置文件

hosts主機名稱解析配置文件

網絡接口的配置文件(網卡)

/etc/sysconfig/network-scripts/ifcfg-INTERFACE

IP、MASK、GW、DNS相關配置
該文件通過大量參數來定義接口的屬性;其可通過vim等文本編輯器直接修改,也可以使用專用的命令修改,(centos6:system-config-network(setup),cenos7:nmtui)

添加設備后,需要啟動該設備,可以手動創建配置文件,或者使用命令 setup/nmtul

一個網絡接口可以設置多個ip,需要使用別名(lable)。

setup 文字圖形界面

[root@centos7 ~]# rpm -qf /usr/bin/setup
setuptool-1.19.11-8.el7.x86_64

nmtui(文字圖形界面)/nmcli—-是工具軟件

[root@centos7 ~]# rpm -qf /usr/bin/nmcli
NetworkManager-1.0.6-27.el7.x86_64

路由配置文件

/etc/sysconfig/network-scripts/rote-INTERFACE
要用到非默認網關路由,支持兩種配置風格,不可混用。

1)每行一個路由條目
    目標地址 via 下一跳

2)每三行一個路由條目,#為序號
    ADDRESS#=
    NETMASK#=
    GATEWAY#=

修改配置文件不會立即生效,需要重啟網絡服務才能生效。

DNS配置文件

/etc/resolv.conf
[root@centos7 ~]# cat /etc/resolv.conf

# Generated by NetworkManager
search magedu.com localdomain
nameserver 10.1.0.1
nameserver 192.168.154.1

/etc/nsswitch.conf
與/etc/hosts相比優先于DNS

主機名配置文件

/etc/sysconfig/network

    本地主機houstname配置文件/etc/sysconfig/network
    格式    HOSTNAME=mageedu.com
修改主機名配置文件后,只有重新開啟新終端,或重啟服務器才可以生效。或使用命令修改

實例:

    [root@centos6 ~]# cat /etc/sysconfig/network  ###centos6
    NETWORKING=yes  ###是否開啟網絡服務
    HOSTNAME=yangyouwei.centos6
    GATEWAY=           ###也可以定義網關,范圍是全局的。但是同時網卡的配置文件也定義了網關,那么只是網卡的網關生效。

hosts配置文件—–解析其他其他主機用的

本地解析器

解析器執行正向和逆向查詢  ——————解析其他主機的主機名。
/etc/hosts
    ?本地主機名數據庫和IP地址的映像
    ?對小型獨立網絡有用
    ?通常,在使用DNS前檢查
    ?getent hosts 查看/etc/hosts 內容
配置文件格式,
192.168.1.1 www.mageedu.com www mage mageedu magedu
可設置主機名和多個別名。中間用空格隔開。
DNS解析過程,先訪問本地hosts文件,文件中沒有才組查找DNS配置文件(resolv.conf)

網絡服務

隨系統啟動,啟動后讀取配置文件,將網絡配置的參數傳遞給內核。

centos5、6都使用network服務
centos6還是用NetManager服務(但是不穩定,不建議使用,在網卡配置文件中可以禁止使用該服務。)NeworkManager是管理和監控網絡設置的守護進程

centos7使用NetworkManager 也支持使用network
修改了配置文件,要重啟網絡服才能立即生效。

服務管理

centos6:service SERVICE {start|stop|restart|status}

centos7:也支持使用service
實際使用的是 systemctl {start|stop|restart|status} SERVICE[.service]

查看開啟了那些服務

[root@centos7 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

網絡設備名稱

網絡管理軟件一般都是針對網卡名稱,對網卡操作。所以網卡名稱很關鍵。在配置文件中也不要寫錯。

網卡設備名稱,類似硬盤的/dev/sda…的作用。不應該有重名的

網卡別名

一個網絡接口可以配置多個ip,對虛擬主機有用
有多個ip地址的網絡接口,對應的設備及ip要有lable(別名),ifconfig才能夠識別。

使用命令配置網卡別名

將多個IP地址綁定到一個NIC上,別名的網卡不能使用DHCP服務。必須手動配置地址。
eth0:1
eth0:2
eth0:3

ifconfig命令:
    ifconfig eth0:0 192.168.1.100/24 up

ip命令:
    ip addr add 172.16.1.2/16 dev eth0
    ip addr add 172.16.1.1/16 dev eth0 label eth0:0
    ip addr del 172.16.1.1/16 dev eth0 label eth0:0
    ip addr flush dev eth0 label eth0:0

手動編寫配置文件

為每個設備別名生成獨立的接口配置文件
    ?關閉NetworkManager服務
    ?ifcfg-ethX:xxx
    ?必須使用靜態聯網
        DEVICE=eth0:0 名稱必須與文件名一致
        IPADDR=10.10.10.10
        NETMASK=255.0.0.0
        ONPARENT=yes
注意:service network restart 生效
參考/usr/share/doc/initscripts-*/sysconfig.txt

網絡接口識別并命名相關的udev配置文件:
    /etc/udev/rules.d/70-persistent-net.rules
    卸載網卡驅動:
        modprobe-r e1000
    裝載網卡驅動:
        modprobe e1000

eth0, eth1這些名稱是怎么來的呢?

內核發現一個pci網卡設備,調用網卡驅動的probe函數。
probe函數在做完一定的初始化之后,會調用內核接口register_netdev向內核注冊一個新的net_device設備。

這個設備的名字,網卡驅動程序往往只決定其中一部分。
就像下面這種方式,網卡驅動提供一個“eth%d”這樣的名稱,然后調用內核接口register_netdev。
strcpy(netdev->name, "eth%d");
register_netdev(netdev);
register_netdev流程中,會根據系統中已有的接口情況,找出一個最小的還沒有使用的數字編號,分給新注冊的網卡。
比如,系統中當前有,eth0, eth2, eth3三塊網卡。
那么新注冊的網卡,名字就是eth1了。
當然,網卡驅動也可以提供完整的名字,但必須保證名字與現有網卡不沖突。
這在驅動中就不好實現了。而且,一個驅動程序,可能會驅動很多塊網卡,怎么起名字,都是個問題。
最后,用戶態程序,可以通過ioctl系統調用,去修改網卡的名稱。
Linux中總線、設備、驅動這3者是非常重要的數據結構,它們互相之間都有聯系一旦一個設備和一個驅動能夠匹配上,就會執行驅動里的probe。

prpbe 探針

總之一句話,probe函數作為driver的最基本的函數指針,一旦你的device和driver匹配(match,由總(bus)來完成,匹配工作發生在device_register()和drvier_register()的時候),probe函數就肯定會被調用;而probe的參數,pci里是struct pci_dev *pdev ,這個是由linux內核啟動時遍歷pci總線后得到的pci設備的描述符。

probe調用期間一般會完成device的初始化,注冊中斷等操作。

原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/44955

(0)
yywyyw
上一篇 2016-09-09 16:15
下一篇 2016-09-09 16:18

相關推薦

  • mysql-proxy 讀寫分離

    1. 簡介     mysql-proxy 是官方為此的一個測試,項目, 可以完成讀寫分離。但是項目目前還不是很成熟,這里僅作測試。  2. mysql-proxy安裝部署 # wget http://downloads.mysql.com/archives/get/file/mysql-…

    Linux干貨 2015-12-21
  • 馬哥教育網絡21期+第四周練習博客

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# chmod&n…

    Linux干貨 2016-08-02
  • 何為正則表達式?

    何為正則表達式?   UNIX/Linux上有許多文本處理工具,其中最主要最重要要屬grep、sed、和awk三種了,被稱為文本處理三劍客。但是要完全認識他們的各種功能,則必須現在正則表達式及其元字符的使用上打好基礎。 什么是正則表達式呢?正則表達式(regular expression,RE)是一種字符模式,用于在查找過程中匹配指定的字符。正則表…

    Linux干貨 2016-08-16
  • LVM(重要)

    LVM   LVM(Logical Volume Manger),是一種磁盤分區管理機制,可以靈活的調整分區的大小。它是將多個硬盤組成卷組的形式實現的。說白了就是通過軟件來實現對分區靈活管理。   LVM是將多塊硬盤組成PV,再由PV組成VG,VG再組成lv,然后在lv上創建文件系統。   物理存儲介:指的就是硬盤等,最基本的存儲單元。   PV(physi…

    Linux干貨 2016-08-30
  • 日志SYSLOGD_OPTIONS 參數

    SYSLOGD_OPTIONS 參數

    Linux干貨 2018-03-26
  • 馬哥教育網絡班21期+第6周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp [root@localhost tmp]# vim rc.sysin…

    Linux干貨 2016-08-02
欧美性久久久久