linux网络基础

一 介绍

linux网络基础
关于防火墙,这里在做补充。先看一幅图
linux网络基础
防火墙是内核提供的功能,可以通过iptables命令直接设置防火墙规则,也可以通过图中的两个守护进程提供的工具来设置,它们底层使用的命令都是iptables。目前发行版大都使用firewalld作为守护进程,使用firewall-cmd来配置规则,这里就介绍firewalld。

firewalld中,zone是一系列规则的集合(类似iptables命令中的chain),zone的target字段定义默认行为,如果到来(incoming)数据包没有匹配zone的规则,就使用默认行为。firewalld预定义了多种zone,默认网卡设备使用public。public zone中target为default,表示没有成功匹配的(incoming)数据包会被拒绝进入。

规则可以被定义为多种形式,如直接指定服务,如http,ftp,ssh;或者使用端口+协议,如80/tcp,123/udp。但是你可能会发现这些功能很有限,远没有iptables命令灵活,因此firewall-cmd提供--direct直接使用iptables命令的规则来配置防火墙。当不用直接使用iptables,这会造成firewalld服务内核数据不一致。

规则分为运行时规则和永久规则,其实就是保存为内存中副本的规则为运行时规则,保存文件中的规则为永久规则。只不过firewall-cmd一次只能保存一个地方,内存或文件。

网卡具体使用什么zone由NetworkManager确定,如果没有明确指定,会使用firewalld的默认zone,一般为public,但可以通过public-cmd修改。

二 命令

2.1 ip

ip命令功能很强大,常用于查看、修改、设置网卡ip、路由表、设备等功能。配置不会被保存。

代替了ifconfig、route、arp等老工具的使用

ip [ OPTIONS ] OBJECT { COMMAND | help }

  • OBJECT:表示ip具体的某个子功能,常用的为addr(设置ip)、route(路由表)、neighbour(arp缓存)
  • COMMAND:每个object的动作都不一样,可以查询、修改、添加对应实体,但如果没有给出则默认查询
  • help:通过help可查询对应object具体用法

用法参考:Linux命令之ip

2.2 ss

用于查看sockets信息。

代替了老工具netstat的使用

ss [options]
默认显示所有已建立连接(non-listening)的sockets,包括TCP/UNIX/UDP类型的socket。

  • -l:仅显示正在监听(listening)的sockets
  • :仅显示已建立连接(non-listening)的sockets
  • -a:同时显示正在监听(listening)和已建立连接(non-listening)的sockets

  • -t:仅显示tcp类型的sockets
  • -u:仅显示udp类型的sockets
  • -x:仅实现unix类型的sockets
  • :同时显示tcp、udp、unix类型的sockets

  • -n:显示端口而不是服务名
  • -p:显示使用socket的进程

2.3 nmtui

NetworkManager提供的,用于配置网络的字符界面工具。如配置网卡ip、掩码、网关、DNS服务器,并且配置会被保存下来。

2.4 firewall-cmd

  • 检测防火墙状态
    sudo firewall-cmd --state
    
  • 重新加载防火墙规则,运行时添加但没有保存的规则会消失
    sudo firewall-cmd --reload
    
  • 一般添加规则不会被永久保存,添加`–permanent``永久保存却不会立刻生效。有两种方法解决:
    # 设置运行时规则后再保存
    firewall-cmd <other options>
    firewall-cmd --runtime-to-permanent
    保存到文件中,然后重新加载所有规则
    firewall-cmd --permanent <other options>
    firewall-cmd --reload
    
  • zone操作
    # 查看当前默认zone
    sudo firewall-cmd --get-default-zone
    # 改变默认zone
    sudo firewall-cmd --set-default-zone=internal
    # 查看网卡设备使用的zone。网卡只会在没有明确设置zone时才使用默认zone
    sudo firewall-cmd --get-active-zones
    # 得到一个zone的全部配置
    sudo firewall-cmd --zone=public --list-all
    # 得到全部zone的配置
    sudo firewall-cmd --list-all-zones
    
  • 添加、删除服务或端口
    # 通过服务名添加、删除服务
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --remove-service=http --permanent
    # 通过端口+协议添加、删除服务
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --remove-service=http --permanent
    
  • 等等等等

参考:Introduction to FirewallD on CentOS

参考

Introduction to FirewallD on CentOS
CHAPTER 5. USING FIREWALLS
Firewalld
CentOS 7 中firewall-cmd命令
Computer network
OSI model
A Deep Dive into Iptables and Netfilter Architecture
iptables查看、开放、删除端口、保存设置
NetworkManager
What’s the difference between Network Initscript and NetworkManager in RHEL 7?
Linux命令之ip