一、IP、网关、路由、掩码

   网络间主机的通信是通常是基于TCP/IP协议。数据从A主机发送到网络中的B主机,需要通过层层包装及协议转发,最终通过B主机的IP地址定位,B主机才能最终接收到数据。这个过程很复杂,中间数据的处理是通过TCP/IP协议实现的,而TCP/IP协议又是建立在OSI四层模型上。OSI的四层模型每层都有每层的功能,OSI的四层模型主要工作就是对数据报文的切片和包装。而网络上的主机都必须要有一个IP地址,数据在发出时,TCP/IP协议根据当前IP及掩码计算出当前主机和通信主机是否在同一个网络段,当两主机不在同一网段时,这时就要通过路由器查找到下一个需要经过的网络设备,也就是网关了,通过网关以及DNS服务器查找IP地址才能最终找到通信主机。所以只有IP地址、网关、掩码、路由及DNS服务器确认了,并且两台主机之间有一个畅通路线,两主机之间才能正常通信。

IP地址通常分成三类:

A类:第一位为网络位,后三位为主机位B类:前二位为网络位,后二位为主机位C类:前三位为网络位,后一位为主机位

1-126个网络

容纳的主机数:2^24-2

默认掩码:255.0.0.0

网络地址:1.0.0.0

广播地址:126.255.255.255

IP地址范围:1.0.0.1 ~ 126.255.255.254

127.0.0.1是环回测试用的固定的特殊IP

10.0.0.0到10.255.255.255是私有地址

128-191个网络

容纳的主机数:2^16-2

默认掩码:255.255.0.0

网络地址:128.0.0.0

广播地址:191.255.255.255

IP地址范围:128.0.0.1到191.255.255.254

172.16.0.0到172.31.255.255是私有地址

169.254.0.0到169.254.255.255是保留地址


192-223个网络

容纳的主机数:2^8-2

默认掩码:255.255.255.0

网络地址:192.0.0.0

广播地址:223.255.255.255

IP地址范围:192.0.0.1 到 223.255.255.254

192.168.0.0到192.168.255.255是私有地址


二、Linux网络配置

   配置网络前首先在确保主机网卡能够被系统识别。给Linux主机配置网络分两种方式:一是使用命令配置,配置好后立即生效,但系统开机后一切又会还原;二是通过配置文件,配置好后需要重启服务生效,但从这以后永久有效。

1、通过命令配置网络

(1)、使用ifconfig命令给系统配置IP地址

使用ifconfig命令有两种方式配置IP地址,一是:

ifconfig eth0 172.16.251.48 netmask 255.255.0.0

二是,使用短格式的掩码

ifconfig eth0 172.16.251.48/16

(1.1)、添加多个网络地址

ifconfig eth0:0 192.168.2.24/24

wKiom1MWk-rC5cuJAAG5KyFy7Z4255.jpg

(2)、使用route命令配置路由
(2.1)、显示路由

route # 显示路由信息
route -n # 使用数字格式显示,不反解地址到主机名

wKiom1MUhRGzeJ0UAADMKmcAtco363.jpg

各字段说名:

DestinationGatewayGenmaskFlagsMetricIface
目标网络段的网络地址
网关/下一跳(0.0.0.0为任意地址即没有网关)掩码

U:启用状态

G:默认网关

H:主机路由

度量值,到达目标网络需要经过的跳数通过哪个设备能够到达目标网络

(2.2)、添加路由

route add -host 主机地址/掩码 gw 下一跳 [dev Device] #添加主机地址作为路由
route add -net 网络地址 gw 下一跳 [dev Device] #添加网络地址作为路由

注意,当前主机IP地址必须要和下一跳在同一网段。

添加一个网络路由,网络IP为192.168.0.0,下一跳为172.16.2.10

route add -net 192.168.0.0/24 gw 172.16.2.10

wKiom1MUijiyWdvpAAEQhjcxUzI389.jpg

添加一个主机路由,主机IP为192.168.3.20,下一跳为172.16.123.110,主机地址不用指定掩码

wKiom1MUi7jwRiioAAEmr_OvW70015.jpg

添加默认路由的两种方法:

route add -net 0.0.0.0 gw 172.16.23.12
route add default gw 172.16.23.12

(2.3)、删除路由

删除网络路由

route del -net 192.168.0.0/24

wKioL1MUjU-yhTQdAADuHk1Uf0A517.jpg

删除主机路由

route del -host 192.168.3.20

wKiom1MUjmfQhqEbAADmYKLGmKQ751.jpg

删除默认路由

route del default


(3)、使用ip命令

ifconfig命令和route命令相对来说是比较老的命令,ip命令是一个可以代替ifconfig和route的命令,也可以实现配置IP、配置路由的功能。

ip命令常用的三个功能

ip link # 显示与配置网络设备相关信息
ip addr # 显示与配置IP信息
ip route # 显示与配置路由信息

(3.1)、ip link

命令格式

ip [-s] link show  <== 单纯的查阅该装置相关的信息
ip link set [device] [动作与参数]
相关动作参数
up|down  :启动 (up) 或关闭 (down) 某个接口,其他参数使用默认的以太网络;
address  :如果这个装置可以更改 MAC 的话,用这个参数修改!
name     :给予这个装置一个特殊的名字;
mtu      :就是最大传输单元啊!

显示所有网络设备的信息

ip link show

wKioL1MWjP3D_eVBAADQGqHpHgY734.jpg

显示指定网卡的详细信息

ip -s link show eth0

wKiom1MWjZzRklYGAADwSmTPgHg227.jpg

关闭指定网卡

ip link set eth0 down

wKioL1MWjjrQbKWWAACFAcxcpVA357.jpg

开启指定网卡

ip link set eth0 up

wKiom1MWjpmgcUpkAAClEhybbBg074.jpg

设定网卡MTU值

ip link set eth0 mtu 1000

wKiom1MWjyXjV31KAACX5ULvIt8764.jpg

修改网卡名字,修改前请先关闭网卡,修改名字尽量少用,如果是测试修改完后请记得改回去

ip link set eth0 name wubinary

wKioL1MWkGWR5VCfAADRMj1V8yQ364.jpg

修改网卡MAC地址,如果是测试修改完后记得改回去

ip link set eth0 address aa:aa:aa:aa:aa:aa

wKioL1MWkWWyswdRAACIVgHwtVY699.jpg


(3.2)、ip addr

命令格式

ip addr show   # 显示 IP 参数
ip addr [add|del] [IP参数] [dev 网卡] [相关参数]

显示所有设备的IP信息

ip addr show

添加多个IP地址

ip addr add 192.168.3.5/24 dev eth0

wKioL1MWlWCB2ttgAAFoi-sazzc887.jpg

删除指定IP

ip addr del 192.168.2.24/24 dev eth0:0

wKioL1MWlgrDcQndAAIqwB6zzTI242.jpg

刷新网卡信息

ip addr flush eth0


(3.3)、ip route

命令格式

ip route show  # 显示路由配置
ip route [add|del] [IP或网域] [via gateway] [dev 设备]
show :单纯的显示出路由表,也可以使用 list ;
add|del :添加 (add) 或删除 (del) 路由的意思。
IP或网域:可使用 192.168.50.0/24 之类的网域或者是单纯的 IP ;
via     :从那个 gateway 出去,不一定需要;
dev     :由那个设备连出去,这就需要了


查看路由信息

ip route show

wKioL1MWmEizqM0bAABzGj879Hs478.jpg

添加路由

ip route add 192.168.3.5/24 dev eth0 # 没有网关
ip route add 192.168.3.5/24 via 192.168.20.1 dev eth0 # 有网关

wKioL1MWmergXvVhAACUMJTjaAQ114.jpg

删除路由

ip route del 192.168.3.5

wKioL1MWmkTh2Pi8AAChdDQxU2g023.jpg


(4)、使用GUI/TUI界面配置网络

使用命令调出GUI/TUI界面

TUI
system-config-network-tui 或 setup
GUI
system-config-network-gui
# 使用界面配置网络信息,配置完成后,信息将保存至配置文件中

例如:使用setup命令

wKiom1MWm2jj8WLeAAE6Nx2W3rI212.jpg


2、通过配置文件配置网络

CentOS6.4的网络配置文件为

IP信息配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
路由信息配置文件
/etc/sysconfig/network-scripts/ruote-eth0
dns信息配置
/etc/resolv.conf

ifcfg-eth0配置文件各字段说明:

   DEVICE=eth0

       此配置关联至的设备,设备名要与文件名ifcfg-后的内容保持一致

   BOOTPROTE=none

       引导协议:{none|static|dhcp|bootp(引导协议)}

   HWADDR=00:0c:29:96:c5:24

       MAC地址:要与真实MAC地址保持一致;可省略;

   NM_CONTROLLED=yes

       是否接受NetworkManager脚本控制:{yes|no}

   ONBOOT=yes

       是否开机自动启动此网络设备,{yes|no}

   TYPE=Ethernet

       设备类型:Ethernet,Bridge(首字母大写)

   UUID="2d225e7-232232-3435-44364566-dddf23"

       唯一标识,可省

   IPADDR=172.16.12.23

       IP地址

   NETMASK=255.255.0.0

       掩码

   GATEWAY=172.16.0.1

       默认网关

   DNS1=172.16.0.1

       DNS服务地址

   IPV6INIT=no

       是否自动初始化IPv6协议地址

   USERCTL=no

       是否允许普通用户启用或禁用此网络设备

   PEERDNS={yes|no}

       是否允许DHCP服务分配地址时直接更新/etc/resolv.conf中的DNS服务器地址;


route-eth0配置文件说明

   配置文件的格式1:每行一个要配置的路由条目

       DEST via NEXT_HOP

   配置文件的格式2:每一组一个路由条目,每组条目编号后用空行分开

       ADDRESS#=DEST

       NETMASK#=NETMASK

       GATEWAY#=Gateway


DNS配置文件说明

   可连续指定三个:最多三个

   nameserver DNS_SERVER_IP


修改完配置文件后需要重新启动网络服务

service network restart


三、Linux网络管理

1、网络连通性判断

ping命令,判断某个IP地址是否可以远程通信

ping: 基于ICNP协议,互联网控制报文协议
ping [options] IP
-c #: 指定所请求的次数
-w deadline: 测试执行时长,不管成功与否,到了时间就结束

wKiom1MWn-vg1pqyAAJEmXhY5Tg574.jpg

mtr命令,网络连通性判断工具

mtr -h提供帮助命令
mtr -v显示mtr的版本信息
mtr -r已报告模式显示

traceroute命令,获取从当前主机到达目标主机所有经过的网关

traceroute HOST


2、查看主机网络连接状态

netstat命令

-t: tcp协议的连接
-u: udp协议的连接
-l: 监听状态的连接
-a: 所有状态
-p: 连接相关的进程
-n: 数字格式显示
-r: 显示路由表,类似于route或ip route show

常用组合:

netstat -tan  # tcp状态的连接数字显示

netstat -tunl # 显示tcp udp监听状态的进程并且以数字显示

netstat -rn   # 类似于 ip route show

wKioL1MWoRmA4lXAAAJ1TiTr8IQ228.jpg


netstat命令是一个古老的命令,Linux上有一个ss命令可以完全代替netstat命令

ss命令

-t: tcp
-u: udp
-a: 相关协议的所有连接
-l: 监听状态的套接字
-e: 显示扩展信息
-m: 显示套接连接使用的内存信息
-p: 进程及PID
-n: 数字格式地址及端口
-o state {established}: 指定状态显示

两个命令用法相似

wKioL1MWoZPAi6WgAAG4pmNbMyk549.jpg