网络总结

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.178linux.com/44955

(0)
yywyyw
上一篇 2016-09-09
下一篇 2016-09-09

相关推荐

  • lvs-dr实践-week17

    1、结合图形描述LVS的工作原理; lvs工作流程: ipvs是工作于input链上,监听目标地址上对应的目标端口,如果这个端口对应的服务定义为集群服务, 就强行修改报文的流程,完成转发, 通过postrouting送出去, 为了让后端主机能够接收, 此时需要让RS也具有目标ip地址, 要么修改目标ip地址支持基于TCP,UDP,SCTP,AH,EST,AH…

    2017-05-23
  • sed与vim

    sed工具 简介 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Se…

    Linux干货 2016-08-15
  • 来马哥教育后

    来北京三天了,说实话,我长了不少见识,甚至可以说是见过了以前一些从没想到过的事情,我拼了命往大城市来,如今如我所愿了,我来的时候发誓对自己说:我要留在北京,我也要积累足够的资本让自己真正成为大城市的上层社会人士,现在吃多少苦我都无所谓。 我以前在建筑工地的时候想:我将来能学IT是最幸福的事了。当时真是这么想的,等我真到马哥教育,我发现,我把问题想的太简单,就…

    Linux干货 2018-03-26
  • Linux管理目录和文件命令

     管理目录命令: pwd:显示当前目录 Cd:   改变当前目录 ls:    查看目录下的内容 rmdir: 删除目录 管理文件命令: cat: 查看文件内容 cp: 复制文件内容 grep:在文件中查找某字符 touch:创建文件 rm&nbsp…

    2016-03-05
  • 虚拟主机的实现

    示例1:基于ip 编辑配置文件,切换到最后一行,增加: <VirtualHost 192.168.1.117:80>     ServerName web1.ams.com     DocumentRoot "/vhosts/web1/htdocs" </VirtualHost&g…

    Linux干货 2016-08-05
  • 第九周作业

    awk基础 简介        AWK是一种优良的文本处理工具。它是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一,相比sed常常作用于一整行的处理,awk比较倾向于将一行分成数个“字段”来处理。所以,awk相当适合处理小型的数据处理。 基础用法 awk[选项] ‘program’…

    2017-07-16