Linux 网络设置
Ø 简介
本文主要记录 Linux 中的网络命令、网络配置等,包括如下内容:
1. 互联网寻址过程
2. 网络配置文件
3. 网络管理命令
4. 防火墙管理命令
1. 互联网寻址过程
1) TCP/IP 与 OSI 的比较
该图为左侧TCP/IP 四层参考模型与 OSI 的七层参考模型的对应关系。
TCP/IP 物理层:网卡 OSI 物理层:网卡
数据链路层:MAC
网络层:IP、ARP、ICMP
传输层:TCP、UDP
TCP/IP 应用层:SSH、Apache OSI 会话层:客户端—服务端建立连接
表示层:加密、压缩等
应用层:服务应用
简单的说:OSI七层参考模型可以理解为对 TCP/IP 四层参考模型的更细化,便于对整个网络连接更详细的分析。对OSI 参考模型有简单的了解即可,没必要深入的学习,重点掌握 TCP/IP 参考模型即可。
2) 互联网的计算机寻址
1. MAC(数据链路层)
Windows 查看 MAC 地址,ipconfig -all
厂商标识 网卡标识 #理论上,可以确保世界上的网卡是唯一的
说明:MAC地址可以标记唯一的一台主机。
2. IP(网络层)
192.168.1.150 #ipv4 的地址
ipv4 地址:32位,分为4段,以十进制来书写。
ipv6 地址:128位,以十六进制来书写。ipv6 除了在数量上增加了很多,可以防止攻击(比如:DOS 拒绝服务攻击 SYNFLOOD)
拒绝服务攻击SYNFLOOD:不需要知道程序的任何漏洞,像洪水一样不停的向攻击主机发送 SYN请求,由于主机忙于应答,可能照成无法响应正常请求。
TCP / UDP
TCP 是可靠的协议,很重要的原因是 TCP 会进行三次握手(断点重发、定时器)。例如:
A主机 B主机
IP IP
MAC MAC
1024+ 80 #端口
-------------à SYN请求(问B主机,我们可以建立连接吗?)
ß------------ ACK/SYN(可以建立连接、我正在等待跟你建立连接)
-------------à ACK(OK,我们建立网络连接)
TCP 协议可以简单理解:就像公交车在道路上行驶,需要遵循交通规则,这个规则就类似于网络 TCP 协议。网络在传输的过程中,就需要遵循这种协议。
TCP 的典型应用:SSH
全双工:TCP 属于全双工。
单工:好比单行线,只能从一端到另一端。比如电视机就是单工设备。
半双工:同一时刻只能有一个传输,比如对讲机设备。
UDP 速度快,这正是 TCP 的缺点。因为 UDP 不需要进行三次握手,但缺点是可靠性上不如 TCP。
UDP 的典型应用:QQ发送消息,比如观看视频、以及一些网络服务同时使用了 TCP 和 UDP。
3. FQHN – 完整的计算机名称(应用层)
www.mdingdang.com.
www(主机名)mdingdang(二级域)net(顶级域).(根域)
4. ARP 地址解析协议
n ARP 解析过程
根据 IP 地址,获取对方的 MAC 地址:
1) 发送广播包,局域网中的每台主机都会受到,只有IP地址为166.111.1.1的这台主机才会应答;
2) 应答中包含 MAC 地址;
3) 两台主机建立连接后,就可以数据传输了。
arp -a #查看 APR 缓存表
arp -d IP地址 #删除 ARP 地址
arp -s IP地址MAC地址 #添加 ARP 静态记录
5. RARP 反向地址解析协议
知道自己的 MAC 地址,去询问自己的 IP 地址。
6. 域名解析
1) 本机域名解析文件
/etc/hosts
IP地址主机名或域名 别名
1. 这是比较原始的方式,因为互联网存在太多的IP地址和域名,不可能将所有的IP地址和域名都存放在文件中,将会特别庞大,所以没有被使用。
2. 但是注意:在域名解析时,首先还是寻找本机的 hosts文件,没有匹配的域名解析才会使用 DNS 解析。
3. 注:Windows 下位于 C:\Windows\System32\drivers\etc 目录下。
2) DNS
DNS 是 Domain Name System 的缩写,称为域名系统。目前使用最多的是 BIND 的这个域名解析软件,占市场的80%。
n 域名服务的层次结构
在DNS 中域的数据是分散管理的。
n 域的委托管理
13组根域由 Network Information Center 组织管理。连日本鬼子都有一组,可惜中国还没有。另外顶级域也是有该组织来增加和管理的。
n 递归查询
比如:客户端访问:www.mdingdang.com
1. 首先询问本机 DNS 服务器
缓存(广义缓存)
www.mdingdang.com ipaddr
会自动记录解析记录,比如下一次访问以下域名时,就不会去访问根域了:
www.234.com à .com
abc.mdingdang.com à .mdingdang.com
2. 如果 DNS 缓存中没有,先去询问根域 .
è .com
3. 顶级域 .com
è mdingdang.com
返回 DNS 服务 à 客户端
n IP 与 MAC
1) 一个 MAC 地址可以对应多个 IP 地址;
2) 一个 IP 地址也可以对应多个 MAC 地址,比如cluster(集群)的应用;
3) 一个域名也可以对应多个 IP 地址;
4) 一个 IP 也可以对应多个域名。
2. 网络配置文件
1) /etc/sysconfig/network-scripts/ifcfg-ens33 文件,保存 IP 地址和网关
IPADDR=IP地址
NETMASK=子网掩码
BROADCAST=广播地址
GATEWRY=网关
2) /etc/sysconfig/network 文件,保存本机主机名
HOSTNAME=主机名
3) /etc/rc.d/init.d/network 网络启动脚本
/etc/rc.d/init.d/network start/stop/restat
4) /etc/hosts 主机名数据库
5) /etc/services 文件,网络服务信息
6) /etc/resolv.conf,指定 NDS 服务器地址
nameserver DNS服务器IP地址(小于等于3个)
3. 网络管理命令
1) ifconfig
功能描述 |
用于查看或设置网络设备 |
语法 |
ifconfig [选项] |
示例:
ifconfig #查看网络设备信息
ifconfig ens33 192.168.1.152 #临时修改 IP 地址
ifconfig ens33 down/up #关闭或开启 ens33 网卡
2) ethtool
功能描述 |
检测网络连接 |
语法 |
ethtool [选项] |
示例:
ethtool ens33 #检测ens33 网卡是否插入网线
3) arp
功能描述 |
查看 APR 表信息 |
语法 |
arp [选项] |
示例:
arp -a #查看 APR 缓存表
arp -d IP地址 #删除 ARP 地址
arp -s IP地址MAC地址 #添加 ARP 静态记录
4) ping
功能描述 |
探测远程主机 |
语法 |
ping [选项] |
示例:
ping -c 3 47.99.169.130 #指定发送ping 包的次数
ping -s 1000 47.99.169.130 #指定发送ping 包的大小
提示:0% packet loss #需要注意丢包率
5) route
功能描述 |
操作路由表 |
语法 |
route [选项] |
示例:
6) traceroute
功能描述 |
查看路由路径 |
语法 |
traceroute [选项] |
示例:
traceroute test.ms.zxsxdd.com #查看路由过程
7) netstat
功能描述 |
监控网络状态 |
语法 |
netstat [选项] |
示例:
netstat -tunpl #查看全部端口
netstat -tunpl | grep 6379 #查看某个端口
netstat -an | more #查看系统监听的端口
netstat -an | grep :80 #查看运行端口
说明:也可以使用 !net 命令。
8) 查看监听的端口
netstat -lnpt
netstat -tunpl | grep :80
netstat -lnpt | grep 5672 #检查端口被哪个进程占用
ps 6832 #查看进程的详细信息
kill -9 6832 #中止进程
9) 重启网络
service restart network
4. 防火墙管理命令
1) 使用systemctl 管理
systemctl status firewalld #查看防火墙状态
systemctl start firewalld #开启防火墙
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #停止并禁用开机自启动
systemctl enable firewalld #启用开机自启动
systemctl restart firewalld #重新启动
或者 service firewalld status
2) 使用 firewall-cmd 命令管理(CentOS7 以上版本)
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #使配置立即生效
或者 service firewalld restart
1. 查看开放的端口
firewall-cmd --zone=public --list-ports --permanent
2. 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone #作用域
--add-port=80/tcp #开放的端口,格式为:端口/通讯协议
--permanent #永久生效(没有此参数重启后会失效)
开放区间端口
firewall-cmd --zone=public --add-port=30000-31000/tcp --permanent
firewall-cmd --zone=public --add-port=30000-31000/udp --permanent
3. 验证开放端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp
4. 关闭端口
firewall-cmd --zone=public --remove-port=82/tcp --permanent
5. 使用开放、关闭服务
列出支持的服务,在列表中的服务是放行的
firewall-cmd --get-services
查看 ftp 服务是否支持,返回yes或者no
firewall-cmd --query-service ftp
临时开放 ftp 服务
firewall-cmd --add-service=ftp
查看当前开了哪些端口
一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
firewall-cmd --list-services
永久开放 ftp 服务
firewall-cmd --add-service=ftp --permanent
永久关闭 ftp 服务
firewall-cmd --remove-service=ftp --permanent
6. 开启常见的端口
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
7. 关闭常见的端口
firewall-cmd --zone=public --remove-port=20/tcp --permanent
firewall-cmd --zone=public --remove-port=21/tcp --permanent
firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=443/tcp --permanent
firewall-cmd --zone=public --remove-port=1521/tcp --permanent
firewall-cmd --zone=public --remove-port=6379/tcp --permanent
firewall-cmd --zone=public --remove-port=53/udp --permanent
firewall-cmd --get-zones
注:如果没有 firewall 需要先安装
yum install firewalld firewalld-config