Linux常用网络命令

IP配置

ip基本配置项:
TYPE=Ethernet
DEVICE=ens192
HWADDR=00:50:56:86:bf:e8
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.27.5.13
PREFIX=24
GATEWAY=172.27.5.1
DNS1=113.200.67.200

常用配置项说明

网卡MAC 地址获取:
ifconfig ens192 | grep ether >> ifcfg-ens192
nmcli dev show

网卡UUID获取:
nmcli con show

生成一个新的UUID:
uuidgen ens192
将新的uuid修改至配置文件中,重启network服务;

其他配置项说明:

DEFROUTE=yes|no: 该接口是否为默认路由;
NM_CONTROLLED=yes|no 是否由Network Manager托管;
USERCTL=no 非root用户能否管控本设备; PEERDNS: 是否允许DHCP获得的DNS覆盖本地的DNS
IPV6INIT=no: 是否启用IPv6的接口

IPV4_FAILURE_FATAL=yes 若配置失败,则禁用设备;
IPV6_FAILURE_FATAL=yes 若配置失败,则禁用设备;

网络管理工具

===使用nmcli管理网络:===
;添加IP
nmcli connection modity ens33 ipv4.address 192.168.10.20

;添加掩码
nmcli connection modity ens33 ipv4.address 192.168.10.20/24

;添加网关
nmcli connection modity ens33 ipv4.gateway 192.168.10.1

;设置IP获取方式为手动/自动
nmcli connection modity ens33 ipv4.method manual

;添加DNS
nmcli connection modity ipv4.dns 114.114.114.114

;查看网卡信息
nmcli connection

;显示具体的网络接口信息
nmcli connection ens33

;显示所有活动连接
nmcli connection show --active

;删除一个网卡
nmcli connection delete ens33

;删除DNS
nmcli connection modity ens33 -ipv4.dns 114.114.114.114

===使用nmtui配置网络:===
设置界面没有掩码选项,所以IP地址带上掩码信息:
172.27.5.13/24 即:172.27.5.13 255.255.255.0

网络链接 端口 进程 防火墙

....

netstat 使用

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

参数解析

指定链接类型

-t : 指明显示TCP端口,t=TCP。
-u : 指明显示UDP端口,u=UDP。
-a :显示所有连接和侦听端口。

指定监听状态

-l : 列出所有处于监听状态的 Sockets

加快查询速度

-n : 不使用反向域名解析,直接使用数字显示主机,端口和用户名;

更多的信息

输出中显示 PID 和进程名称 #netstat -p

常用操作

找出程序运行的端口:
netstat -tunlp | grep ssh

找出运行在指定端口的进程:
netstat -an | grep ":80"

lsof

lsof(list open files)是一个列出当前系统打开文件的工具。

查看打开的文件信息

查看所有打开的文件:
lsof |more

查看指定范围

lsof abc.txt 显示开启文件abc.txt的进程

指定用户

lsof -u username

指定进程(号)

lsof -p pid

指定程序

lsof -c pname

指定目录下

lsof +d /usr/local/ 显示目录下被进程开启的文件

查看网络信息

指定端口号

lsof -i     显示所有打开的端口号;
lsof -i:22   查找22端口现在运行什么程序;

防火墙firewalls

Firewalld防火墙概念简介

Firewalld:动态防火墙管理器服务

动态防火墙简介

iptables service管理防火墙规则的模式:

用户将新的防火墙规则添加进 /etc/sysconfig/iptables配置文件当中,再执行命令service iptables reload使变更的规则生效;

在这整个过程的背后,iptables service首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则;

而如果配置了需要reload内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作;

而不幸的是,这个动作很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中。

如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么firewalld所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题;

任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables即可。

Firewalld防火墙特点介绍

Firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和iptables一样。

它们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

对于接触Linux较早的人员对iptables比较的熟悉,但由于iptables的规则比较的麻烦,所以学习成本较高;

但firewalld的学习对网络并没有那么高的要求,相对iptables来说要简单不少。

如果开启Firewalld防火墙,默认情况会阻止流量流入,但允许流量流出。

Firewalld防火墙区域

相比于传统的防火墙管理工具还支持了动态更新技术并加入了“zone区域”的概念。

简单来说就是为用户预先准备了几套防火墙策略集合(策略模板),然后可以根据生产场景的不同而选择合适的策略集合,实现了防火墙策略之间的快速切换。

firewalld将所有网络流量划分为多个区域,从而简化防火墙管理。

Firewalld 根据数据包源IP地址或传入网络接口等条件,
流量将转入相应区域的防火墙规则。

每个区域都可以具有自己要打开或者关闭的端口和服务列表。

区域配置文件存在于/etc/firewalld/zones目录中,如果找不到,会到/usr/lib/firewalld/zones中寻找,后者存放默认/通用的配置文件。

确定使用的区域:

public 是默认区域(zone)。

对于一个接收到的请求具体使用哪个 zone,firewalld 是通过下面三种方式来判断的:
source:来源地址。
Interface:接收请求的网卡。
firewalld:配置的默认区域(zone)。

这三个方式的优先级按顺序依次降低,也就是说如果按照 source 可以找到就不会再按 interface 去找,如果前两个都找不到才会使用第三个默认区域。

Firewalld防火墙命令
firewallD的配置方法
参数配置
Zone区域相关指令

--get-default-zone
查询默认的区域名称以及接口信息,初始默认一般为public区域;
注: 服务、端口、服务没有适配的区域时,才会执行默认的区域进行匹配。

--set-default-zone = ""
设置默认的区域,使其永久生效;

--get-active-zones
显示当前正在使用的区域,及其区域中绑定的网卡名称;

--get-zone
显示总共可用的区域;

--new-zone = ""
新增区域;

Services 服务相关

--get-services
显示预先定义的服务;

--add-serveice = <服务名>
设置默认区域允许 该服务的流量

--remove-service = <服务名>
设置默认区域不在允许 该服务的流量

Port端口相关

--add-port = 端口号/协议
设置默认区域允许 该端口的流量

--remove-port = 端口号/协议
设置默认区域不在允许 该端口的流量

Interface网卡

一个区域里面可以绑定多个网卡,每个网卡只能指定到一个区域。

--add-interface=<网卡名称>
将源自该网卡的所有流量都导向某个指定区域;

--change-interface=<网卡名称>
将某个网卡与区域进行关联;

参数配置详解
配置前准备
# 禁用旧版防火墙服务
systemctl mask iptables
systemctl mask ip6tables

# 启动firewalld防火墙,并加入开机自启动服务
systemctl start firewalld.service 
systemctl enable firewalld.service
查询当前配置情况
# 查看系统中目前已有的所有区域
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

# 通过--get-default-zone获取当前默认使用的区域
# firewall-cmd --get-default-zone
public
一般配置逻辑

使用firewalld各个区域规则结合配置,
调整默认public区域拒绝所有流量,
但如果来源IP是10.0.0.0/24网段则允许。

# 临时移除默认区域的规则策略
# firewall-cmd --remove-service=ssh --remove-service=dhcpv6-client
success

# 添加来源是10.0.0.0/24网段,将其加入白名单(更精细化控制使用富规则)
# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted

# 检查当前活动的区域配置信息
# firewall-cmd --get-active-zone
public
interfaces: eth0 eth1
trusted
sources: 10.0.0.0/24
Firewall 端口配置实例
01. 添加允许访问单个端口
# 临时添加规则策略信息
# firewall-cmd --add-port=8080/tcp

# 永久添加规则策略信息
# firewall-cmd --add-port=8080/tcp --permanent
# firewall-cmd --reload
02. 添加允许访问多个端口
# 临时添加多个端口信息  
# firewall-cmd --add-port={80/tcp,8080/tcp}

# 永久添加多个端口信息  
# firewall-cmd --add-port={80,8080}/tcp  --permanent
# firewall-cmd --reload
03. 查看检查端口放行情况
# firewall-cmd --list-ports  
80/tcp 8080/tcp
04. 移除临时添加的端口规则
# 移除指定端口信息  
# firewall-cmd --remove-port={80/tcp,8080/tcp}
Firewall服务配置实例

使用firewalld允许客户请求服务器的http https协议,仅临时生效,如添加--permanent重启则永久生效

01. 添加允许访问单个服务信息
# 临时添加规则策略信息
# firewall-cmd --add-service=http

# 永久添加规则策略信息
# firewall-cmd --add-service=https --permanent
# firewall-cmd --reload
02. 添加允许访问多个服务信息
# 临时添加多个服务信息  
# firewall-cmd --add-service={http,https}

# 永久添加多个服务信息  
# firewall-cmd --add-service={http,https} --permanent  
# firewall-cmd --reload
03. 查看检查服务放行情况
# firewall-cmd --list-services  
http https
04. 移除临时添加的端口规则
# 移除端口信息  
# firewall-cmd --remove-port={http,https}
Firewall 防火墙端口转发

1.开启伪装IP:
开启masquerade,实现地址转换功能
firewall-cmd --add-masquerade --permanent

2.配置端口转发:
firewall-cmd --permanent --zone=public
    --add-forward-port=port=6666:proto=tcp:toport=22:toaddr=172.16.1.9

3.重载配置: