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