linux网络基本配置
Posted mylive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux网络基本配置相关的知识,希望对你有一定的参考价值。
常用网络配置文件
- /etc/sysconfig/network-scripts/目录下的网卡ifcfg-ens*配置文件
- /etc/resolv.conf文件
- /etc/hosts文件
- /etc/services文件
- /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet #表示网络类型
PROXY_METHOD=none #表示为网卡配置静态还是动态ip地址
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=27fe993c-0a7c-4975-8871-5e7a987bbea0 #表示网卡的UUID
DEVICE=ens33 #表示网卡物理设备的名字
ONBOOT=yes #表示启动系统时是否激活该网卡,yes是激活,no不激活
DNS1="202.96.209.5" #表示DNS服务器的ip地址
HWADDR=00:0c:29:11:59:7c #表示网卡的MAC地址
IPADDR=“192.168.0.2” #表示网卡的ip地址
PREFIX="24"
GATEWAY="192.168.0.1" #表示该网络网关地址
ROADCAST=192.168.0.255 #表示该网络广播地址
NETMASK=255.255.255.0 #表示子网掩码
NETWORK=192.168.0.0 #表示网络地址
可以为BOOTPROTO设置以下四种选项
- none:表示无须启动协议
- bootp:表示使用BOOTP协议
- dhcp:表示使用DHCP协议动态获取IP地址
- static:表示手工设置静态ip地址
- /etc/resolv.conf文件是由域名解析器(resolver,一个根据主机名解析ip地址的库)使用的配置文件,下面是实例
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.64.2
描述如下
- nameserver:表示解析域名时使用该ip地址指定的主机名为域名服务器,其中域名服务器是按照文件中出现的顺序来查询的。
- search:表示DNS搜索路径,即解析不完整名称时默认的附加域名后缀,这样可以在解析名称时用简短的主机名而不是完全合格域名(FQDN)
- /etc/hosts文件:在没有域名服务器情况下,系统上的所有网络查询都通过查询该文件来解析对应于某个主机名的IP地址。该配置文件用于存放主机名与ip地址对应匹配的信息。
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#最左边一列是计算机ip地址,中间一列是主机名,最右面的咧是该主机的别名
- /etc/services文件:是一个服务名和服务端口对应的数据库文件,定义了linux系统中所有服务的名称、协议类型、服务的端口等信息。
常用网络命令
- traceroute:用于显示数据包到目标主机之间的路径。追踪网络数据包的路由途径,预设IPv4数据包大小是60字节,用户可以另外设置。 命令语法: traceroute [选项] [主机名或ip地址] [数据包大小] 选项|含义 ---|--- -F|不要分段数据包 -g<网关>|通过指定网关的路由数据包,最多设置8个IPv4和127个IPv6 -I|使用ICMP ECHO进行路由跟踪 -T|使用TCP SYN进行路由跟踪 -m<最大TTL>|设置跳的最大数(最大TTL),默认为30 -n|不将ip地址解析成域名 -p<端口>|设置目的端口来使用。 -r|绕过正常的路由,并直接发送到连接网络上的主机 -s<来源地址>|设置本地主机送出数据包的ip地址 -t|<tos>|设置数据包的TOS数值 -N<次数>|设置同时要尝试探测的次数,默认为16 -w<等待时间>|设置远端主机回应的时间 -U|使用UDP的特定端口进行路由跟踪 -i<接口>|指定网络接口进行操作
例如:跟踪从本地计算机到www.163.com网站的路径
[root@localhost ~]# traceroute www.163.com
traceroute to www.163.com (111.3.84.42), 30 hops max, 60 byte packets
1 gateway (192.168.64.2) 0.236 ms 0.275 ms 0.161 ms
2 * * *
3 * * *
按Ctrl+c结束跟踪
- ifconfig:可以显示和配置网络接口,比如设置IP地址、MAC地址、激活或关闭网络接口。 命令语法:ifconfig [接口] [选项或IP地址]
选项 | 含义 |
---|---|
-a | 显示所有网络接口状态 |
add<地址> | 设置网络设备的IPv6地址 |
del<地址> | 删除网络设备的IPv6地址 |
media<类型> | 设置网络设备媒介类型 |
mtu<字节> | 设置网络设备的最大传输单元(MTU) |
netmask<子网掩码> | 设置网络设备的子网掩码 |
up | 激活指定的网络设备 |
down | 关闭指定的网络设备 |
hw<类型><硬件地址> | 设置这个接口的硬件地址(MAC) |
txqueuelen<长度> | 设置设备发送队列的长度 |
multicast | 设置接口上的多播标志 |
tunnel<地址>创建IPv4与IPv6之间的隧道通信地址
例如:配置网卡eth0的ip地址,同时激活该设备
[root@localhost ~]# ifconfig eth0 192.168.64.149 netmask 255.255.255.0 up
使用ifconfig命令设置网卡IP地址的方法在重启系统之后将失效,IP地址还是原来的。如果需要永久设置,那么需要修改/etc/sysconfig/network-scripts/ifcfg-ens33文件,更改文件内的IPADDR参数值。 例如:激活网卡eth0设备
[root@localhost ~]# ifconfig eth0 up
更改网卡eth0的硬件MAC地址为
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.148 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::93e0:500f:62fc:c2a0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:11:59:7c txqueuelen 1000 (Ethernet)
RX packets 764 bytes 63379 (61.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 420 bytes 45262 (44.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# ifconfig eth0 hw ether 00:0C:29:18:2E:3D
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.148 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fe80::93e0:500f:62fc:c2a0 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:2e:3d txqueuelen 1000 (Ethernet)
RX packets 818 bytes 67587 (66.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 444 bytes 48434 (47.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- ping:可以用来测试与目标计算机之间的连通性。执行ping命令会使用ICMP传输协议发出要求回应的信息,如果远程主机的网络功能没有问题,就会回应该信息,因而得知是否运行正常。
命令语法:ping [选项] [目标]
选项 | 含义 |
---|---|
-c<完成次数> | 设置完成回应的次数 |
-i<间隔秒数> | 在每个数据包发送之间等待的时间(秒数)。缺省值为在每个数据包发送之间等待一秒 |
-n | 指定只输出数字,不去查寻主机地址的符号名 |
-s<数据包大小> | 指定要发送的数据的字节数。默认值是56 |
-t<存活数值> | 设置存活数值TTL的大小 |
-v | 显示详细输出信息 |
-q | 安静输出 |
-r | 绕过正常的路由表,之间发送到链接接口上的主机 |
-W<超时> | 等待一个响应的时间,单位为秒 |
-w<截至日期> | 指定超时,单位为秒 |
-B | 不允许ping来改变探测器的源地址 |
-I<接口地址> | 设置源地址为指定接口的地址 |
-R | 记录路由 |
例如:测试与计算机192.168.0.101的连通性,每次发送的ICMP数据包大小为128字节。
[root@localhost ~]# ping -s 128 192.168.0.101
PING 192.168.0.101 (192.168.0.101) 128(156) bytes of data.
136 bytes from 192.168.0.101: icmp_seq=1 ttl=128 time=0.586 ms
136 bytes from 192.168.0.101: icmp_seq=2 ttl=128 time=1.67 ms
136 bytes from 192.168.0.101: icmp_seq=3 ttl=128 time=1.28 ms
136 bytes from 192.168.0.101: icmp_seq=4 ttl=128 time=2.17 ms
- netstat:可以用来显示网络状态的信息(比如得知这个linux系统的网络连接、路由表、接口统计、伪装连接和组播成员)
命令语法:netstat [选项] [延迟]
选项 | 含义 |
---|---|
-a | 显示所有的socket |
-i | 显示接口表 |
-l | 显示监控中的服务器socket |
-M | 显示伪装的连接 |
-n | 之间使用ip地址,而不解析名称 |
-p | 显示正在使用Socket的PID和程序名称 |
-r | 显示路由表信息 |
-s | 显示网络统计信息(如SNMP) |
-t | 显示TCP传输协议的连线状况 |
-u | 显示UDP传输协议的连线状况 |
-o | 显示计时器 |
-g | 显示组播组成员 |
-v | 显示详细信息 |
-s | 显示网络统计信息(SNMP) |
例如:显示端口为22的连接情况
[root@localhost ~]# netstat -antu|grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.64.148:22 192.168.64.1:53210 ESTABLISHED
tcp 0 52 192.168.64.148:22 192.168.64.1:53996 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
- arp:用来增加、删除和显示ARP缓存条目 命令语法:arp [选项] [IP地址] [MAC地址]
选项 | 含义 |
---|---|
-a | 显示指定主机当前所有的ARP缓存 |
-d | 删除指定的条目 |
-s | 设置一个新的ARP条目 |
-n | 不解析名称 |
-v | 显示详细信息 |
-i<接口> | 指定网络接口 |
例如:查看系统ARP缓存信息
[root@localhost ~]# arp
Address HWtype HWaddress Flags Mask Iface
gateway ether 00:50:56:e2:37:1d C eth0
192.168.64.1 ether 00:50:56:c0:00:08 C eth0
192.168.64.254 ether 00:50:56:e3:03:69 C eth0
- tcpdump:它是linux系统总强大的网络数据采集分析工具之一,可以将网络中传送的数据包的头完全截获下来以供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来筛选信息。 命令语法:tcpdump [选项] [表达式]
选项 | 含义 |
---|---|
-w<文件> | 指定将监听到的数据包写入到文件中保存 |
-c<数据包数量> | 指定要监听的数据包数量,达到指定数量后自动停止抓包 |
-p | 不将接口设置为混杂模式 |
-r<文件> | 从文件读取数据包 |
-n | 指定将每个监听到数据包中的域名转换成IP地址后显示 |
-i<网络接口> | 指定监听的网络接口 |
-B<缓冲区大小> | 设置作业系统的捕获缓冲区大小 |
-q | 安静输出,打印较少的协议信息 |
-A | 指定将每个监听到的数据包以ACSII可见字符打印 |
-S | 指定打印每个监听到的数据包的TCP绝对序列号而不是相对序列号 |
-e | 指定将监听到的数据包链路层的信息打印出来,包括源mac和目的mac,以及网络层的协议 |
-s<数据包长度> | 指定要监听数据包的长度 |
-t | 不显示时间戳 |
-F<文件> | 使用文件作为过滤表达式输入 |
-C<文件大小> | 在把原始数据包直接保存到文件之前,检查文件大小是否超过指定文件的大小。如果超过,将关闭此文件,另外创建一个文件继续用于原始数据包的记录;新创建的文件名与指定的文件名一致,但文件名后多了一个数字,该数字会从1开始随着新创建文件的增多而增多。文件大小的单位是百万字节(1MB) |
-M<密码> | 如果TCP数据包由TCP-MD5选项,那么为其摘要的验证指定一个公共的密钥密码 |
-W<文件总数> | 与-C选项配合使用,限制可以打开的文件数目,并且当文件数据超过这里设置的限制时,依次循环替代当前的文件,这相当于一个文件缓存池。同时会使得每个文件名的开头出现足够多并用来占位的0,这可以方便这些文件被正确地排序。 |
-y<数据链接类型> | 设置数据链接类型 |
捕获经过网络接口eth0的数据包
[root@localhost ~]# tcpdump -i eth0
管理网络服务
systemd
在systemd中,服务、设备、挂载等资源统一被称为单元,所有systemd总由许多单元类型,服务单元文件的扩展名是.service,同shell脚本等相似,比如由查看、启动、停止、重启、启用或者禁止服务的参数。
一个单元的配置文件可以描述系统服务(.service)、挂载点(.mount)、sockets(.sockets)、系统设备(.device)、交换分区(.swap)、文件路径(.path)、启动目标(.target)、由systemd管理的计算器(.timer)等。
systemd单元文件放置位置有以上两个
- /usr/lib/systemd/system #system默认单位文件安装目录
- /etc/systemd/system #系统管理员创建和管理的单元目录,优先级最高。
使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名(比如sshd.service).如果没有指定扩展名,systemctl默认把扩展名当作.service. 命令语法:systemctl [选项] [单元命令或单元文件命令]
选项 | 含义 |
---|---|
-r | 显示主机和本地容器的单元列表 |
-q | 抑制输出 |
-a | 显示所有加载的单元/属性,包括dead/empty的 |
-H<[用户@]主机> | 在远程主机上操作 |
-t<类型> | 列出特定类型的产品,类型可以指定为service、mount、device或socket等 |
单元格命令描述如下表
单元命令 | 描述 |
---|---|
start<名称> | 表示启动单元 |
stop<名称> | 表示停止单元 |
status<名称> | 表示查看单元状态 |
restart<名称> | 表示重新启动单元 |
reload<名称> | 表示加载一个或多个单元 |
list-units<模式> | 列出加载的单元 |
kill<名称> | 发送信号到一个单元的进程 |
is-active<模式> | 检查单元是否激活 |
is-failed<模式> | 检查单元是否失败 |
status<模式或PID> | 显示一个或多个单元的运行状态 |
单元文件命令描述如下
单元文件命令 | 描述 |
---|---|
list-unit-files<模式> | 列出安装的单元文件 |
enable<名称> | 启用一个或多个单元文件 |
disable<名称> | 禁用一个或多个单元文件 |
is-enabled<名称> | 检查单元文件是否启用 |
例子:启用sshd服务,查看sshd服务当前状态
[root@localhost ~]# systemctl start sshd.service
[root@localhost ~]# systemctl status sshd.service
设置sshd服务开机自动启动,并查询该服务是否开机自动启动。
[root@localhost ~]# systemctl enable sshd.service
[root@localhost ~]# systemctl is-enabled sshd.service
enabled
查看所有加载的服务
[root@localhost ~]# systemctl list-units -t service
摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
以上是关于linux网络基本配置的主要内容,如果未能解决你的问题,请参考以下文章