更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > Linux ipcs、ipcrm、ip6tables-save、ip6tables命令的用法及解释

Linux ipcs、ipcrm、ip6tables-save、ip6tables命令的用法及解释

更新时间:2022-01-22 08:33:22浏览次数:709+次

以下为你详细解释ipcs、ipcrm、ip6tables-save、ip6tables命令的用法。

\

Linux ipcs命令的用法及解释

Linux ipcs命令用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存与信号量的信息。

1、语法

ipcs(选项)

2、选项

-a:显示全部可显示的信息;

-q:显示活动的消息队列信息;

-m:显示活动的共享内存信息;

-s:显示活动的信号量信息。

3、实例

ipcs -a

\

Linux ipcrm命令的用法及解释

Linux ipcrm命令用来删除一个或更多的消息队列、信号量集或者共享内存标识。

1、语法

ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s SemaphoreID ] [ -S SemaphoreKey ]

2、选项

-m SharedMemory id 删除共享内存标识 SharedMemoryID。与 SharedMemoryID 有关联的共享内存段以及数据结构都会在最后一次拆离操作后删除。

-M SharedMemoryKey 删除用关键字 SharedMemoryKey 创建的共享内存标识。与其相关的共享内存段和数据结构段都将在最后一次拆离操作后删除。

-q MessageID 删除消息队列标识 MessageID 和与其相关的消息队列和数据结构。

-Q MessageKey 删除由关键字 MessageKey 创建的消息队列标识和与其相关的消息队列和数据结构。

-s SemaphoreID 删除信号量标识 SemaphoreID 和与其相关的信号量集及数据结构。

-S SemaphoreKey 删除由关键字 SemaphoreKey 创建的信号标识和与其相关的信号量集和数据结构。

msgctl、shmctl 和 semctl 子例程提供了删除操作的细节。标识和关键字可以用 ipcs 命令找到。

3、示例

如果要删除和 SharedMemoryID 18602 相关的共享内存段,请输入:

ipcrm -m 18602

Linux ip6tables-save命令的用法及解释

Linux ip6tables-save命令将Linux内核中ip6tables表导出到标准输出设备上。

1、语法

ip6tables-save(选项)

2、选项

-c:指定在保存iptables表时,保存当前的数据包计数器和字节计数器值;

-t:指定要保存的表的名称。

Linux ip6tables命令的用法及解释

Linux ip6tables命令和iptables一样,都是linux操作系统中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6。

1、语法

ip6tables(选项)

2、选项

-t<表>:指定要操纵的表;

-A:向规则链中添加条目;

-D:从规则链中删除条目;

-i:向规则链中插入条目;

-R:替换规则链中的条目;

-L:显示规则链中已有的条目;

-F:清楚规则链中已有的条目;

-Z:清空规则链中的数据包计算器和字节计数器;

-N:创建新的用户自定义规则链;

-P:定义规则链中的默认目标;

-h:显示帮助信息;

-p:指定要匹配的数据包协议类型;

-s:指定要匹配的数据包源ip地址;

-j<目标>:指定要跳转的目标;

-i<网络接口>:指定数据包进入本机的网络接口;

-o<网络接口>:指定数据包要离开本机所使用的网络接口。

-c<计数器>:在执行插入操作(insert),追加操作(append),替换操作(replace)时初始化包计数器和字节计数器。

3、实例

在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:

ip6tables -nl --line-numbers

/etc/sysconfig/ip6tables文件:

使用编辑器编辑/etc/sysconfig/ip6tables文件:

vi /etc/sysconfig/ip6tables

可能会看到下面的默认 ip6tables 规则:

*filter

:INPUT accept [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT

-A RH-Firewall-1-INPUT -p 50 -j ACCEPT

-A RH-Firewall-1-INPUT -p 51 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited

COMMIT

与 IPv4 的 iptables 规则类似,但又不完全相同。

要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT

-p tcp表示仅针对 tcp 协议的通信。--dport指定端口号。

要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT

-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT

同时针对 tcp 和 udp 协议开启 53 端口。

要开启 443 端口,在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT

要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT

对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited

COMMIT

改为:

-A RH-Firewall-1-INPUT -j LOG

-A RH-Firewall-1-INPUT -j DROP

COMMIT

保存并关闭该文件。然后重新启动 ip6tables 防火墙:

# service ip6tables restart

然后重新查看 ip6tables 规则,可以看到如下所示的输出:

# ip6tables -vnL --line-numbers

输出示例:

\

IPv6 私有 IP:

IPv4 通常默认即可保护内部局域网私有 IP 上的主机。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。

允许特定的 ICMPv6 通信:

使用 IPv6 的时候需要允许比 IPv4 更多类型的 ICMP 通信以保证路由和 IP 地址自动配置等功能正常工作。有时候,如果你的规则设置太过苛刻,可能都无法分配到正确的 IPv6 地址。当然,不使用 DHCP 而是手动配置 IP 地址的除外。

下面是一些比较常见的 ipv6-icmp 配置实例:

:ICMPv6 - [0:0]

# Approve certain ICMPv6 types and all outgoing ICMPv6

# ipv6-icmp

-A INPUT -p icmpv6 -j ICMPv6

-A ICMPv6 -p icmpv6 --icmpv6-type echo-request -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type redirect -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 141 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 142 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 148 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 149 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 151 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 152 -s fe80::/10 -j ACCEPT

-A ICMPv6 -p icmpv6 --icmpv6-type 153 -s fe80::/10 -j ACCEPT

-A ICMPv6 -j RETURN

-A OUTPUT -p icmpv6 -j ACCEPT