ubuntu(linux) ip与网络设置教程
现代网络配置概述
老版本Linux内核中配置网络功能的工具net-tools在2001年起LInux社区已经对其停止维护。iproute2是linux下网络管理的新一代工具包。
私有网络地址范围:
类别 | 网络地址 | 子网掩码 | 掩码位数 | 子网数 |
---|---|---|---|---|
A | 10.X.X.X | 255.0.0.0 | /8 | 1 |
B | 172.16.X.X - 172.31.X.X | 255.255.0.0 | /16 | 16 |
C | 192.168.0.X - 192.168.255.X | 255.255.255.0 | /24 | 256 |
网络接口名称: systemd 使用"enp0s25" 之类的 "可预测网络接口名称"。
对于使用 systemd 的现代 Debian 桌面系统,网络接口通常由两个服务进行初始化:lo 接口通常在“networking.service”处理,而其它接口则由“NetworkManager.service”处理。 不要在服务器上使用这些自动网络配置工具。它们主要针对于笔记本电脑上的移动桌面用户。 没有图像界面的现代网络配置使用 systemd 的系统中,可以在 /etc/systemd/network/ 里配置网络。
查看监听的端口
ss -ltn # 监听TCP端口
ss -ltnp # 带上进程
ss -ltnpT # 带上线程
主机名解析
# 文件方式主机名解析(优先调用)
vim /etc/hosts
# dns解析(修改后立即生效)
vim /etc/resolv.conf
# 永久修改DNS地址
sudo vim /etc/systemd/resolved.conf
# DNS服务排查
dig
# 本机的主机名
vim /etc/hostname
**注意:**如果 resolvconf 软件包安装了,/etc/resolv.conf
就是个软链接,并通过钩子脚本自动管理其内容。
iproute2工具包
# 查看网络接口
ip link show
# 查看具体网络接口和流量信息
ip -s link show dev ens33
# 仅查看被激活的网络接口
ip link show up
# 激活或者停用网络接口
ip link set dev ens33 up/down
# 打开/关闭多播功能
ip link set dev ens33 multicast on/off
# 调整接口的MTU
ip link set dev ens33 mtu 1500
# 修改网卡MAC地址(需先关闭接口)
ip link set dev ens33 address 00:0c:29:0d:ce:95
# --------------------------------------
# 查看网络接口和IP地址
ip addr show
# 查看具体网络接口和IP地址
ip addr show dev ens33
# 添加IP地址(brd +表明是标准的广播地址)
ip addr add 192.168.1.24/24 brd + dev ens33
ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev ens33
ip addr add 192.168.8.222/24 label ens123:1 dev ens33
# 删除IP地址
ip addr del 192.168.1.24/24 dev ens33
# 删除某个接口的所有IP地址
ip addr flush dev ens33
# ---------------------------------------
# 查看/添加/修改/删除路由路由表
ip route show
ip route add default via 192.168.1.2 dev ens33
ip route replace default via 192.168.1.2 dev ens33
ip route add 172.16.32.0/24 via 192.168.1.1 dev ens33
ip route del 172.16.32.0/24
# ---------------------------------------
# 查看/添加/删除内核的ARP表
ip neign show
ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev ens33
ip neigh del 192.168.1.100 dev ens33
# ---------------------------------------
# 查看/添加/删除多播地址
ip maddr list dev ens33
ip maddr add 33:44:00:00:00:01 dev ens33
ip maddr del 33:44:00:00:00:01 dev ens33
# ---------------------------------------
# 查看网络连接统计
ss -s
# 查看TCP监听端口
ss -tlnp
当不指定网络接口时,ip addr其实是ip addr show的简略写法
IP地址配置
新版Ubuntu引入了netplan工具来管理网络配置,不再使用interface(networking.service)。 在netplan的后端中,默认使用systemd-networkd或者NetworkManager来自动管理IP地址。
# 配置DHCP
sudo vim /etc/netplan/******.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
ens33:
dhcp4: true
dhcp6: true
sudo netplan apply
# 配置静态IP地址
sudo vim /etc/netplan/******.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
ens33:
dhcp4: false
addresses: [172.21.2.26/24]
gateway4: 172.21.2.1
nameserver:
addresses: [8.8.8.8]
optional: true
防火墙
ufw 全称Uncomplicated FireWall,是 debian 系发行版中为了轻量化配置 iptables 而开发的一款工具。
iptables是可以控制 Linux内核的netfilter 模块,netfilter 内部分为三个表,分别是 filter, nat, mangle,每个表又有不同的链(Chains),每个链下可以有不同的规则(rules)。
当你使用了 ufw 这类前端时,尽量避免ufw与iptables同时使用,尤其要慎重使用 iptables –F 来清空所有链的规则。
Ubuntu20.04一般都默认安装了UFW。
#--------------一般用户操作流程-----------------
# 安装ufw
apt install ufw
# 启动(关闭为disable,重启为reload,重置为reset)
ufw enable
# 默认拒绝所有
ufw default deny
# 查看状态和规则
ufw status verbose
# 查看iptable报告
ufw show raw
# --------------------------------------------
# 开放TCP22端口(拒绝为deny)
ufw allow 22/tcp
# 开放TCP和UDP的53端口
ufw allow 53
# 删除上述规则
ufw delete allow 53
# 允许某IP访问
ufw allow from 202.103.12.33
# 删除上述规则
ufw delete allow from 202.103.12.33
# 允许某IP段访问某端口
ufw allow proto tcp from 10.0.1.0/10 to 本机IP port 25
TCP Wrappers
工作流程:
- 先以/etc/hosts.allow文件优先对比,如果符合就放行
- 若无记录,再以/etc/hosts.deny文件对比,如果符合就拒绝
- 若无记录,最终放行
# 检查某程序是否支持TCPWrappers
ldd /usr/sbin/sshd | grep wrap
# 配置主机拒绝表
vim /etc/hosts.deny
all: 29.33.21.22 # 拒绝某IP访问所有服务
rsync: all # 拒绝所有源IP访问rsync服务
rsync: 192.168.1.0/255.255.255.0 10.0.0.100 # 拒绝这些IP访问rsync服务