1. eth0 eth0:1 eth0.1html
eth0 eth0:1 和eth0.1三者的关系对应于物理网卡、子网卡、虚拟VLAN网卡的关系:
物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。
子网卡:子网卡在这里并非实际上的网络接口设备,可是能够做为网络接口在系统中出现,如eth0:一、eth1:2这种网络接口。它们必需要依赖于物理网卡,虽然能够与物理网卡的网络接口同时在系统中存在并使用不一样的IP地址,并且也拥有它们本身的网络接口配置文件。可是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工做。
虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也能够做为网络接口在系统中出现,可是与子网卡不一样的是,他们没有本身的配置文件。他们只是经过将物理网加入不一样的VLAN而生成的VLAN虚拟网卡。若是将一个物理网卡经过vconfig命令添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.一、eth1.2这种名字。linux
注意:当须要启用VLAN虚拟网卡工做的时候,关联的物理网卡网络接口上必须没有IP地址的配置信息,而且,这些主物理网卡的子网卡也必须不能被启用和必须不能有IP地址配置信息。这个在网上看到的结论根据个人实际测试结果来看是不许确的,物理网卡自己能够绑定IP,而且给本征vlan提供通讯网关的功能,但必须是在802.1q下。web
/sbin/ifconfig 查看、配置、启用或禁用网络接口(网卡)的工具
ifconfig 是一个用来查看、配置、启用或禁用网络接口的工具,这个工具极为经常使用的。好比咱们能够用这个工具来配置网卡的IP地址、MAC地址、掩码、广播地址等。值得一说的是用ifconfig 为网卡指定IP地址,这只是用来调试网络用的,并不会更改系统关于网卡的配置文件。若是您想把网络接口的IP地址固定下来,目前有三个方法:一是经过各个发行和版本专用的工具来修改IP地址;二是直接修改网络接口的配置文件;三是修改特定的文件,加入ifconfig 指令来指定网卡的IP地址,好比在redhat或Fedora中,把ifconfig 的语名写入/etc/rc.d/rc.local文件中; 数据库
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0缓存
ifconfig配置网络接口语法:
ifconfig 网络端口 IP地址 hw MAC地址 netmask 掩码地址 broadcast 广播地址 [up/down]
ifconfig经常使用用法: 服务器
虚拟IP技术在高可用领域像数据库SQLSERVER、web服务器等场景下使用不少,很疑惑它是怎么实现的,偶然,发现了一种方式能够实现虚拟ip。它的原理在于同一个物理网卡,是能够拥有多个ip地址的,至于虚拟网卡,也可用经过该方式拥有多个ip。 即对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个均可以链接到这台主机,全部项目中数据库连接一项配置的都是这个虚IP,当服务器发生故障没法对外提供服务时,动态将这个虚IP切换到备用主机。网络
其实现原理主要是靠TCP/IP的ARP协议。由于ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操做系统会自动维护这个缓存。这就是整个实现 的关键。tcp
在eth0处引用别名,设置完子网掩码便可
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up工具
此时查看网卡信息oop
eth0 Link encap:Ethernet HWaddr 08:00:27:64:59:11 inet addr:166.111.69.17 Bcast:166.111.69.255 Mask:255.255.255.0 inet6 addr: 2402:f000:1:4412:a00:27ff:fe64:5911/64 Scope:Global inet6 addr: fe80::a00:27ff:fe64:5911/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:597673 errors:0 dropped:0 overruns:0 frame:0 TX packets:215472 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:67285933 (67.2 MB) TX bytes:22782158 (22.7 MB) eth0:0 Link encap:Ethernet HWaddr 08:00:27:64:59:11 inet addr:166.111.69.100 Bcast:166.111.69.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:843 errors:0 dropped:0 overruns:0 frame:0 TX packets:843 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:67174 (67.1 KB) TX bytes:67174 (67.1 KB)
而后找另外一台机器ping这个vip(eth0:0)就能够看到显示结果了。
写在/etc/rc.local里也能够,写在这里就不怕断电后机器没法正常使用了。
更详细参考:Linux-配置虚拟IP实例
用ifconfig 来配置虚拟网络接口:
有时咱们为了知足不一样的须要还须要配置虚拟网络接口,好比咱们用不一样的IP地址来架运行多个HTTPD服务器,就要用到虚拟地址;这样就省却了同一个IP地址,若是开设两个的HTTPD服务器时,要指定端口号。
虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:一、eth0:2 ... .. eth1N。固然您为eth1 指定多个IP地址,也就是 eth1:0、eth1:一、eth1:2 ... ...以此类推;
ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up
注意:指定时,要为每一个虚拟网卡指定不一样的物理地址;
2. Lo
网络配置必定须要有 环回接口,也就是loopback。
什么接口是loopback?先看一个linux下面的配置:
[root@ZhouTianzuo ~]# ifconfig lo lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2584 errors:0 dropped:0 overruns:0 frame:0 TX packets:2584 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:129200 (126.1 KiB) TX bytes:129200 (126.1 KiB
从配置能够看出,lo的mask仅为8bit,也就是说,只要127开头,任何网络主机号均可以,也就是说环回接口能够理解为一个网络号。
验证一下,ping 127.0.0.1 127.0.1.1 127.1.1.1 126.1.1.1
linux:~ # ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.019 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.012 ms ^C --- 127.0.0.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.012/0.015/0.019/0.005 ms linux:~ # linux:~ # linux:~ # ping 127.0.1.1 PING 127.0.1.1 (127.0.1.1) 56(84) bytes of data. 64 bytes from 127.0.1.1: icmp_seq=1 ttl=64 time=0.015 ms 64 bytes from 127.0.1.1: icmp_seq=2 ttl=64 time=0.010 ms ^C --- 127.0.1.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.010/0.012/0.015/0.004 ms linux:~ # linux:~ # ping 127.1.1.1 PING 127.1.1.1 (127.1.1.1) 56(84) bytes of data. 64 bytes from 127.1.1.1: icmp_seq=1 ttl=64 time=0.014 ms 64 bytes from 127.1.1.1: icmp_seq=2 ttl=64 time=0.009 ms 64 bytes from 127.1.1.1: icmp_seq=3 ttl=64 time=0.010 ms ^C --- 127.1.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.009/0.011/0.014/0.002 ms linux:~ # linux:~ # ping 126.1.1.1 PING 126.1.1.1 (126.1.1.1) 56(84) bytes of data. ^C --- 126.1.1.1 ping statistics --- 31 packets transmitted, 0 received, 100% packet loss, time 30238ms linux:~ #
能够,127这网络号下面的主机编址都是loopback。
继续这个,咱们修改一下lo的地址,也是能够的:
[root@ZhouTianzuo ~]# ifconfig lo 130.0.0.1 [root@ZhouTianzuo ~]# ifconfig lo lo Link encap:Local Loopback inet addr:130.0.0.1 Mask:255.255.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3363 errors:0 dropped:0 overruns:0 frame:0 TX packets:3363 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:169619 (165.6 KiB) TX bytes:169619 (165.6 KiB) [root@ZhouTianzuo ~]#
这个时候,默认的掩码变成了16bits,也就是网络130.0的下面的全部的主机都是loopback了,再ping以前的127.0.0.1也就不可能通了:
[root@ZhouTianzuo ~]# ping 127.0.0.1 PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
没法通,这里就不抓包了。
再看配置为32bits的掩码,会有什么状况:
[root@ZhouTianzuo ~]# ifconfig lo 130.0.0.1 netmask 255.255.255.255 [root@ZhouTianzuo ~]# [root@ZhouTianzuo ~]# ifconfig lo lo Link encap:Local Loopback inet addr:130.0.0.1 Mask:255.255.255.255 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3363 errors:0 dropped:0 overruns:0 frame:0 TX packets:3363 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:169619 (165.6 KiB) TX bytes:169619 (165.6 KiB) [root@ZhouTianzuo ~]# [root@ZhouTianzuo ~]# ping 130.0.0.1 PING 130.0.0.1 (130.0.0.1) 56(84) bytes of data. 64 bytes from 130.0.0.1: icmp_seq=1 ttl=64 time=0.186 ms ^C --- 130.0.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 925ms rtt min/avg/max/mdev = 0.186/0.186/0.186/0.000 ms [root@ZhouTianzuo ~]# ping 130.0.0.2 PING 130.0.0.2 (130.0.0.2) 56(84) bytes of data.
明显ping 130.0.0.2就没有这个ip了。
总结:环回接口能够配置,并且是一个网络号,并不是主机号,除非把掩码配置为32bits。在tcp ip详解里面有说起,就是,net/2的实现,会把到不是彻底匹配ip的到lo的报文转发,好比lo的配置为127.0.0.1,到lo 127.0.0.2的报文就会转发,如此就不对了。