一、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
(2)、使用route命令配置路由
(2.1)、显示路由
route # 显示路由信息 route -n # 使用数字格式显示,不反解地址到主机名
各字段说名:
Destination | Gateway | Genmask | Flags | Metric | Iface |
||
目标网络段的网络地址 |
网关/下一跳(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
添加一个主机路由,主机IP为192.168.3.20,下一跳为172.16.123.110,主机地址不用指定掩码
添加默认路由的两种方法:
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
删除主机路由
route del -host 192.168.3.20
删除默认路由
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
显示指定网卡的详细信息
ip -s link show eth0
关闭指定网卡
ip link set eth0 down
开启指定网卡
ip link set eth0 up
设定网卡MTU值
ip link set eth0 mtu 1000
修改网卡名字,修改前请先关闭网卡,修改名字尽量少用,如果是测试修改完后请记得改回去
ip link set eth0 name wubinary
修改网卡MAC地址,如果是测试修改完后记得改回去
ip link set eth0 address aa:aa:aa:aa:aa:aa
(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
删除指定IP
ip addr del 192.168.2.24/24 dev eth0:0
刷新网卡信息
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
添加路由
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 # 有网关
删除路由
ip route del 192.168.3.5
(4)、使用GUI/TUI界面配置网络
使用命令调出GUI/TUI界面
TUI system-config-network-tui 或 setup GUI system-config-network-gui # 使用界面配置网络信息,配置完成后,信息将保存至配置文件中
例如:使用setup命令
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: 测试执行时长,不管成功与否,到了时间就结束
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
netstat命令是一个古老的命令,Linux上有一个ss命令可以完全代替netstat命令
ss命令
-t: tcp -u: udp -a: 相关协议的所有连接 -l: 监听状态的套接字 -e: 显示扩展信息 -m: 显示套接连接使用的内存信息 -p: 进程及PID -n: 数字格式地址及端口 -o state {established}: 指定状态显示
两个命令用法相似