【菜鸟不菜系列】Linux 基础教程:第八章:网络配置与管理

Linux 基础教程:从零到进阶,成为最强管理员

由 linux.mba「Most Badass Admin」最强管理员社区撰写

第二部分:Linux 进阶

第八章:网络配置与管理

这一章我们将讲解如何在 Linux 系统中管理网络,重点是如何配置网络接口、IP 地址、配置防火墙以及如何使用 DNS 和 hosts 文件等。我们从基础开始,确保你对每一个命令都有清晰的理解。


8.1 网络接口与配置文件

在 Linux 中,网络接口指的是计算机与外部网络进行连接的“桥梁”。每个网络接口通常都有一个对应的配置文件,控制网络的设置。你可以通过这些配置文件来设置静态 IP 地址、动态 IP 地址(DHCP)以及其他网络参数。

查看网络接口

在命令行中,你可以通过以下命令来查看你的网络接口及其配置:

ip addr

或者

ifconfig

这会显示你的所有网络接口信息。比如,eth0 是以太网接口,lo 是本地环回接口。


8.2 配置静态 IP 与 DHCP

静态 IP:这是固定的 IP 地址,适用于你需要让系统始终保持在一个特定 IP 地址上的情况。比如,公司服务器或者你自己家的固定设备。

DHCP:这是一种动态 IP 地址分配方式,适用于你不需要一个固定 IP 地址,系统每次连接到网络时都会自动获取一个可用的 IP 地址。

8.2.1 配置静态 IP

在 Ubuntu 系统中,你可以通过编辑 /etc/netplan/ 下的配置文件来设置静态 IP。

  1. 使用以下命令打开配置文件:
sudo vi /etc/netplan/00-installer-config.yaml
  1. 修改文件,设置静态 IP:
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.10/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
  1. 保存并退出后,应用配置:
sudo netplan apply
8.2.2 配置 DHCP(动态 IP)

如果你希望使用动态 IP 地址,只需要确保配置文件中启用了 DHCP。

Ubuntu:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

CentOS:

  1. 打开网络接口的配置文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
  1. 确保配置如下:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
  1. 保存并重启网络服务:
sudo systemctl restart network

8.3 配置防火墙:iptablesfirewalldufw

在 Linux 系统中,防火墙是用来控制哪些网络流量可以进出你的系统的。防火墙可以通过不同的工具来配置和管理,其中包括 iptablesfirewalldufw

我们先简单了解这三者的区别,然后再详细介绍如何使用它们。

8.3.1 iptablesfirewalldufw 的区别
  • iptables:这是 Linux 中最传统的防火墙工具。它通过命令行配置防火墙规则,可以控制数据包的进出。iptables 功能强大,灵活性高,但需要你手动输入较为复杂的规则,适合有一定经验的管理员使用。
  • firewalld:这是 Red Hat 系列(包括 CentOS 和 Fedora)中用于管理防火墙的工具。它是基于 iptables 的,提供了更易用的命令行工具,并且可以支持“区域”(zones)概念,使防火墙配置更加简洁和易管理。firewalld 默认在 CentOS 7 和更高版本中使用。
  • ufw:这是 Ubuntu 系统中使用的防火墙工具,它是 iptables 的一个简化前端。对于初学者来说,ufw 非常简单,通常只需要几个命令就可以配置基本的防火墙规则。
8.3.2 使用 iptables 配置防火墙

iptables 是 Linux 中传统的防火墙工具,可以控制系统的网络流量。它的配置命令较为复杂,但灵活性极高。

  • 查看当前防火墙规则
sudo iptables -L
  • 允许 HTTP(端口 80)流量
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • sudo: 这个命令告诉系统,你以管理员身份(超级用户)执行这条命令。

  • iptables: 这是防火墙管理工具,用于配置规则来控制网络流量。

  • -A INPUT: -A 表示“追加”,即将这条规则添加到防火墙规则的末尾。INPUT 表示这条规则适用于进入本机的流量。

  • -p tcp: -p 表示协议,这里使用的是 TCP 协议。TCP 是一种常用的网络协议,用于大多数网络通信。

  • --dport 80: --dport 表示目标端口,80 是 HTTP 协议的默认端口。这里意味着你允许通过端口 80 的流量,即网页访问请求。
    -j ACCEPT: -j 代表“跳转”到指定的动作,ACCEPT 表示接受(允许)符合此规则的流量。
    总结:这个命令的意思是:允许任何进入你服务器的 HTTP 请求(即端口 80 的流量)。

  • 允许 SSH(端口 22)流量

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • sudo: 同样表示以管理员身份执行命令。
  • iptables: 防火墙工具。
  • -A INPUT: 向进入流量的规则链添加规则。
  • -p tcp: 使用 TCP 协议。
  • --dport 22: 目标端口为 22,端口 22 是用于 SSH(安全远程登录)的默认端口。
  • -j ACCEPT: 接受通过端口 22 的流量,也就是允许 SSH 连接。

总结:这个命令允许你通过 SSH(端口 22)远程连接到你的机器。

  • 阻止所有流量
sudo iptables -A INPUT -j DROP
  • sudo: 以管理员身份执行命令。
  • iptables: 防火墙工具。
  • -A INPUT: 向进入流量的规则链添加规则。
  • -j DROP: DROP 代表丢弃,这意味着你拒绝所有的流量,不允许任何进入服务器的连接。

总结:这个命令的意思是:丢弃所有进入服务器的流量,即拒绝所有外部连接。

  • 保存 iptables 配置:在 Ubuntu 中,使用 iptables-persistent 来保存防火墙规则:
sudo apt install iptables-persistent

在 CentOS 中,使用以下命令保存规则:

sudo service iptables save
8.3.3 使用 firewalld 配置防火墙(适用于 CentOS)

firewalld 作为 Red Hat 系列的防火墙工具,比 iptables 更加易用。它使用“区域”(zones)的概念来组织防火墙规则。

  • 启用防火墙
sudo systemctl start firewalld
sudo systemctl enable firewalld
  • 允许 HTTP(端口 80)流量
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload
  • sudo: 以管理员身份执行命令,表示你需要超级用户权限来修改防火墙规则。
  • firewall-cmd: 这是管理 firewalld 防火墙的命令行工具。firewalld 是一个动态防火墙管理工具,提供了比 iptables 更简化的管理方式。
  • --zone=public: zonefirewalld 中的一个概念,用来定义防火墙规则应用的网络区域。public 是默认区域之一,表示你所在的网络是公共网络(比如连接到互联网)。不同的区域有不同的安全策略。这里,我们表示将规则应用到 public 区域。
  • --add-service=http: --add-service 是用来添加一个特定服务的规则,http 就是你要允许通过防火墙的服务,这个服务默认使用端口 80(HTTP)。也就是说,这个命令的作用是:允许 HTTP 流量进出你的服务器。
  • --permanent: 这个选项告诉 firewalld 这个规则是永久性的,即使防火墙或服务器重启,规则依然有效。如果不加 --permanent,规则只会在当前会话中生效,重启后会失效。
  • --reload: 这个选项表示重新加载防火墙配置。firewalld 会应用之前添加的所有规则,确保新规则生效。
  • 允许 SSH(端口 22)流量
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload
  • 查看当前防火墙规则
sudo firewall-cmd --list-all
8.3.4 使用 ufw 配置防火墙(适用于 Ubuntu)

ufw 是 Ubuntu 中用于配置防火墙的工具,非常简洁和易用。

  • 启用防火墙
sudo ufw enable
  • 允许 HTTP(端口 80)流量
sudo ufw allow 80/tcp
  • 允许 SSH(端口 22)流量
sudo ufw allow 22/tcp
  • 查看防火墙状态
sudo ufw status
  • 禁用防火墙
sudo ufw disable

8.4 配置 DNS 与 hosts 文件

DNS(域名系统)是将域名(比如 www.google.com)转换为 IP 地址的系统,/etc/hosts 文件则是一个本地的域名解析文件,系统可以通过它来直接解析某些特定的域名。

8.4.1 配置 DNS

你可以通过修改 /etc/resolv.conf 文件来配置 DNS 服务器。这样,系统就会通过指定的 DNS 服务器来进行域名解析。

  1. 打开 /etc/resolv.conf 文件:
sudo vi /etc/resolv.conf
  1. 添加 DNS 服务器:
nameserver 8.8.8.8
nameserver 8.8.4.4
  1. 保存并退出。
8.4.2 配置 hosts 文件

/etc/hosts 文件用于将 IP 地址映射到域名,可以直接在本地解析某些域名。比如,你可以配置局域网内某些设备的 IP 和名称。

  1. 打开 /etc/hosts 文件:
sudo vi /etc/hosts
  1. 添加条目,举个例子:
192.168.1.100  myserver.local

这样,你就可以在终端里使用 ping myserver.local 来访问这个 IP 地址了。


总结

这一章我们学习了如何配置网络,包括静态 IP 和 DHCP 设置,如何管理防火墙(使用 iptablesfirewalldufw),以及如何配置 DNS 和 hosts 文件。掌握这些技能能让你高效地管理 Linux 系统的网络连接,确保你的机器安全并能够与其他设备顺利通信。