Linux网络设置
一,查看及测试网络
1:查看网络配置
1.查看网络接口地址
主机的网络接口卡(网卡)通常称为网络接口。在 Linux 操作系统中,使用 ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)。
(1):查看活动的网络接口设备
若采用 mini 版 CentOS7 安装的系统,默认是没有 ifconfig 命令的,需要先通过 yum方式安装 net-tools 软件包,才有 ifconfig 命令。在不带任何选项和参数执行 ifconfig 命令时,将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行ifconfg 命令后可以看到 ens33、lo 这两个网络接口的信息,具体操作如下:
(2):查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为ifconfig 命令的参数(不论该网络接口是否处于激活状态)。例如,执行“ifconfig ens33"命令后可以只查看网卡 ens33 的配置信息,具体操作如下:
[root@localhost ~]# ifconfig ens33
ens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.11 netmask 255.255.255.0 broadcast 192.168.4.255
inet6 fe80::9106:d38b:670d:1a89 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:81:cc txqueuelen 1000 (Ethernet)
RX packets 4625 bytes 428860(418.8 KiB)
RX errors0 dropped0 overruns0 frame 0
TX packets 2302 bytes 344920 (336.8 KiB)
TX errors0 dropped 0overruns 0 carrier0 collisions 0
2.查看主机名称
2. 查看主机名称
在Linux环境中,主机名是标识系统在网络中的唯一名称。要查看当前系统配置的主机名,可以通过以下几种方式:
-
使用
hostname
命令: 最简单直接的方法是使用hostname
命令,无需任何参数。它会立即打印出当前系统的主机名。
hostname
-
查看/读取
/etc/hostname
文件: 另一种方法是直接查看/etc/hostname
文件的内容,这个文件存储着系统的基本主机名。
cat /etc/hostname
这两个方法都能迅速提供系统当前的主机名信息。
3.查看路由表条目
路由表在Linux系统中扮演着决定数据包如何转发到目标网络的关键角色。查看路由表条目可以帮助理解系统如何做出路由决策。使用ip route
命令(或其别名ip route show
)可以获取路由表的详细信息:
-
基本查看:
ip route show
这将显示所有路由条目,包括目标网络、通过的接口(如eth0
)、网关地址、路由的优先级(metric)等。
-
更详细信息: 如果需要查看特定路由的更多细节,可以通过增加相应的选项来实现,例如查看特定接口的路由:
ip route show dev eth0
这将只显示通过eth0
接口的路由条目。
4.查看网络连接情况
查看当前系统中所有的网络连接(包括TCP、UDP的监听端口和服务),可以使用ss
命令,它是netstat
的现代替代品,提供了更高效的信息检索方式:
ss -tulwnp
-t
表示显示TCP连接。-u
表示显示UDP连接。-l
显示监听(listen)状态的套接字(即服务端口)。-w
显示RAW套接字信息(在某些系统上可能不需要)。-n
不进行DNS解析,直接显示IP和端口号。-p
显示建立连接的进程PID和名称(需要root权限)。
如果您的系统中没有安装ss
命令,可以尝试使用传统的netstat
命令,但请注意netstat
在一些较新的Linux发行版中已被废弃,推荐使用ss
:
sudo netstat -tulpn
这将提供类似的信息,展示所有活跃的网络连接及其对应的进程信息。请确保具有足够的权限执行上述命令,以避免因权限不足而看不到某些进程信息。
2:测试网络连接
1. 测试网络连通性
要检查与远程主机或服务的网络连通性,最常用的命令是ping
。它通过发送ICMP回显请求报文并等待响应来判断目标是否可达。
-
基本使用:
ping [destination]
例如,测试与Google的连通性:
ping google.com
-
限制发送的回显请求数量:
如果只想发送一定数量的回显请求,可以使用
-c
参数指定次数。
ping -c 4 google.com
上述命令会向google.com
发送4个数据包并显示统计信息。
2. 跟踪数据包的路由途径
traceroute
(或在某些Linux发行版中为tracepath
)命令用于追踪数据包从源到目的地经过的路由器(或称为“跃点”)的路径。它通过递增TTL(生存时间)值来实现,从而观察数据包在到达最终目的地之前经过的每一跳。
-
使用traceroute:
traceroute google.com
这将显示出数据包到达google.com
所经过的每个路由器及其往返时间。
- 注意: 根据Linux发行版的不同,可能需要使用
tracepath
代替traceroute
,两者功能相似但输出格式可能有所差异。
3. 测试DNS域名解析
DNS(域名系统)负责将人类可读的域名转换为IP地址。测试DNS域名解析通常涉及查询域名服务器以确认域名能否正确解析为IP地址。
-
使用nslookup:
nslookup [domain_name]
例如:
nslookup example.com
这将显示域名对应的IP地址以及其他DNS记录信息。
-
使用dig命令:
dig
(Domain Information Groper)是另一个强大的DNS查询工具,提供了比nslookup
更详细的信息。
dig [domain_name]
例如:
dig example.com
dig
命令的输出包括但不限于域名的A记录(IPv4地址)、AAAA记录(IPv6地址)、MX记录(邮件交换服务器)等。
二,设置网络地址参数
1:使用网络配置命令
1.修改网卡的地址,状态
(1)修改网卡的IP地址,子网掩码
使用ip
命令动态修改网卡的IP地址和子网掩码是最常见的方式。例如,要将网卡eth0
的IP地址设置为192.168.1.10
,子网掩码为255.255.255.0
(或简写为/24),可以执行以下命令:
sudo ip addr change 192.168.1.10/24 dev eth0
(2)禁用,激活网络接口
- 禁用网络接口:当需要暂时关闭某个网络接口时,可以使用:
sudo ip link set eth0 down
- 激活网络接口:要重新启用该接口,执行:
sudo ip link set eth0 up
这里,eth0
是网络接口的名称,根据实际情况替换。
(3)为网卡绑定虚拟接口
虚拟接口(也称作子接口或别名接口)允许在一个物理接口上设置多个逻辑接口,每个具有独立的IP地址。创建虚拟接口通常用于多IP地址配置场景。以下是如何为eth0
创建一个名为eth0:1
的虚拟接口,并为其分配IP地址的步骤:
sudo ip addr add 192.168.1.11/24 dev eth0 label eth0:1
在这个例子中,192.168.1.11/24
是分配给虚拟接口的IP地址,eth0:1
是虚拟接口的名称。
注意:上述命令均为即时生效的命令,不会永久保存配置。若需永久更改,需要编辑相应网络配置文件,比如在Debian/Ubuntu系统中是/etc/network/interfaces
,而在RHEL/CentOS系统中则是/etc/sysconfig/network-scripts/ifcfg-eth0
(或相应虚拟接口的配置文件,如ifcfg-eth0:1
)。此外,对于使用NetworkManager的系统,可能需要通过NetworkManager的配置或GUI来进行设置。
2.添加,删除静态路由记录
(1)添加,删除到指定网段的路由记录
-
添加路由记录:如果你想要添加一条通往特定网段(例如,
192.168.2.0/24
)的路由,且数据包应该通过网关192.168.1.254
转发,可以使用如下命令:
sudo ip route add 192.168.2.0/24 via 192.168.1.254
-
删除路由记录:相反,如果需要删除这一特定网段的路由记录,命令为:
sudo ip route del 192.168.2.0/24
(2)添加,删除默认网关记录
默认网关是系统不知道如何直接到达的目标网络的出口点。
-
添加默认网关:要添加一条默认网关记录,假设默认网关的IP地址为
192.168.1.1
,命令为:
sudo ip route add default via 192.168.1.1
-
删除默认网关:如果需要删除已设置的默认网关,使用:
sudo ip route del default
重要提示:以上命令均会立即生效,但这些更改不是持久化的,系统重启后会丢失。为了使这些路由配置永久生效,你需要编辑相应的网络配置文件,这通常位于/etc/sysconfig/network-scripts/
目录下(针对RHEL/CentOS等系统)或使用NetworkManager等网络管理工具进行配置。
3.修改主机的名称
在Linux系统中,修改主机名称可以通过临时修改和永久修改两种方式进行。下面分别介绍这两种方法:
临时修改主机名称
你可以使用hostname
命令来临时更改主机名,但请注意,这种更改会在系统重启后失效。
hostname 新主机名
永久修改主机名称
为了确保主机名在系统重启后仍然保持变更,你需要修改系统配置文件。具体的文件依据你的Linux发行版有所不同:
对于Systemd系统(如Ubuntu 16.04及以上版本,Fedora, CentOS 7及以上版本等):
- 修改主机名:使用
hostnamectl
命令永久设置主机名:
sudo hostnamectl set-hostname 新主机名
- 验证更改:可以使用以下命令查看新的主机名设置:
hostnamectl
对于SysVinit系统(如CentOS 6及以前版本,Debian 7及以前版本等):
- 直接修改hostname文件:编辑
/etc/hostname
文件,将文件中的内容替换为新的主机名:
sudo nano /etc/hostname
- 更新hosts文件:同时,你可能需要在
/etc/hosts
文件中更新主机名对应的IP地址条目,确保本地解析正常:
sudo nano /etc/hosts
在hosts
文件中,你可能会看到类似于下面的条目,确保第一列的IP地址与你的网络环境匹配,第二列是新主机名:
127.0.0.1 localhost 新主机名
- 重启系统或服务:在某些情况下,可能需要重启系统或相关服务来使更改生效。虽然并非总是必要,但重启是确保所有系统层面都识别新主机名的最保险方法:
sudo reboot
或仅重启网络服务(取决于你的系统使用的网络管理工具,可能是network
, network-manager
, 或 systemd-networkd
服务之一):
sudo systemctl restart networking
# 或者
sudo service networking restart
# 对于使用systemd的系统
sudo systemctl restart systemd-hostnamed
2:修改网络配置文件
1. 网络接口配置文件
对于使用传统网络管理工具(如ifup/ifdown)的系统(如CentOS 6及以前版本,Debian 7及以前版本等):
-
位置:
/etc/network/interfaces
(Debian/Ubuntu)或/etc/sysconfig/network-scripts/ifcfg-ethX
(RHEL/CentOS)。 -
修改:编辑对应接口配置文件,如
ifcfg-eth0
,可以设置IP地址、子网掩码、网关、DNS等。
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
示例内容:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
对于使用Systemd的系统(如CentOS 7及以上,Ubuntu 16.04及以上等):
- 位置:网络配置可能在
/etc/systemd/network/
目录下,或者通过NetworkManager的配置。
2. 启用,禁用网络接口配置
- 在传统配置中,通过在接口配置文件中设置
ONBOOT=yes
或ONBOOT=no
来启用或禁用接口自动启动。 - Systemd系统中,可以通过
systemctl
命令或NetworkManager来管理服务状态。
3. 主机名称配置文件
-
位置:
/etc/hostname
。 -
修改:直接编辑此文件,输入新的主机名。
sudo nano /etc/hostname
4. 域名解析配置文件
-
位置:
/etc/resolv.conf
(动态管理,手动修改可能不持久)。 -
指定DNS服务器:直接在文件中添加或修改
nameserver
行。
nameserver 8.8.8.8
nameserver 8.8.4.4
对于Systemd-resolved服务(很多现代Linux系统采用),可能需要编辑/etc/systemd/resolved.conf
。
-
本机主机映射文件:
位置:
/etc/hosts
。修改:在此文件中添加或修改IP地址与主机名的映射关系。
127.0.0.1 localhost
192.168.1.10 myhostname
注意:修改这些配置文件后,可能需要重启网络服务或整个系统,或者使用特定命令(如systemctl restart network.service
或systemctl restart NetworkManager.service
)来应用更改。具体操作根据系统和服务而定。