当前位置: 首页 > 知识库问答 >
问题:

linux - 防火墙问题Another app is currently holding the xtables lock. Perhaps you want to use the -w opt?

桓瀚
2023-07-27

目前有两台服务器操作必现,其他服务器没发现问题,这可能是什么原因
命令类似:
iptables -A INPUT -s xx.xx.xx.xx/32 -p tcp -m multiport -j ACCEPT --dports 10101,10102,10103
简化后的代码如下

package mainimport (    "bufio"    "bytes"    "log"    "os"    "os/exec")const (    FILENAME = "info.txt")func main() {    iptableList, err := getInfo()    if err != nil {        log.Println(err)        return    }    for _, cmd := range *iptableList {        var stdout, stderr bytes.Buffer        command := exec.Command("bash", "-c", "iptables"+cmd)        command.Stderr = &stderr        command.Stdout = &stdout        err := command.Run()        if err != nil {            log.Println(err, cmd)            return        }    }}// 读取文件的内容,一共100多条func getInfo() (*[]string, error) {    file, err := os.Open(FILENAME)    if err != nil {        log.Fatal(err)    }    defer file.Close()    scanner := bufio.NewScanner(file)    var lines []string    for scanner.Scan() {        lines = append(lines, scanner.Text())    }    if err := scanner.Err(); err != nil {        return &lines, err    }    return &lines, nil}

共有1个答案

祁刚毅
2023-07-27

Another app is currently holding the xtables lock。 应该是有其他程序占用,可以通过ps -fp $(pidof iptables)或者lsof -p $(pidof iptables)或者 lsof -n 2>/dev/null | grep xtables.lock 找到指定的进程,并处理掉,再重新执行命令

另外代码优化了一下,仅供参考。原代码"iptables" + cmd可能会有空格问题

package mainimport (    "bufio"    "log"    "os"    "os/exec"    "strings")const (    FILENAME = "info.txt")func main() {    iptableList, err := getInfo()    if err != nil {        log.Println(err)        return    }    for _, cmd := range iptableList {        output, err := exec.Command("iptables", strings.Split(cmd, " ")...).Output()        if err != nil {            log.Printf("cmd: %s, err: %s, output: %s\n", cmd, err, output)            return        }    }}func getInfo() ([]string, error) {    file, err := os.Open(FILENAME)    if err != nil {        log.Fatal(err)    }    defer file.Close()    scanner := bufio.NewScanner(file)    var lines []string    for scanner.Scan() {        lines = append(lines, scanner.Text())    }    if err := scanner.Err(); err != nil {        return lines, err    }    return lines, nil}
 类似资料:
  • 基本概念 netfilter Linux 内核包含一个强大的网络过滤子系统 netfilter。netfilter 子系统允许内核模块对遍历系统的每个网络数据包进行检查。这表示在任何传入、传出或转发的网络数据包到达用户空间中的组件之前,都可以通过编程方式检查、修改、丢弃或拒绝。netfilter 是 RHEL 7 计算机上构建防火墙的主要构建块。 尽管系统管理员理论上可以编写自己的内核模块以与 n

  • 我有一个服务器写在JavaServerSocket。 我有一个客户端,它位于一个公司防火墙之上,除了公共端口之外,它阻止了所有东西。 我已在SMTP端口(#25)上启动服务器。 有防火墙的用户连接到它,到目前为止一切正常。 然后服务器处理ServerSocket.accept()。据我所知,它在一个随机端口上创建一个套接字(每次端口号都不同)。因为防火墙而失败。 我的问题是-如何制作ServerS

  • iptables 命令 防火墙分为硬件防火墙和软件防火墙 防火墙策略一般分为两种:开放和屏蔽 iptables 是 Linux 上常用的防火墙软件 iptables 一共有四张表和五条链 iptables (选项)[表名] (选项)[链名规则] (选项)[动作] 表: Raw 负责连接跟踪 Mangle 负责包处理 Nat 负责地址转换 Filter 负责包过滤 链名规则: PREROUTING

  • 本文向大家介绍Linux防火墙配置SNAT教程(1),包括了Linux防火墙配置SNAT教程(1)的使用技巧和注意事项,需要的朋友参考一下 1、实验目标   以实验“防火墙配置-访问外网WEB”为基础,在WEB服务器上安装Wireshark,设置Wireshark的过滤条件为捕获HTTP报文,在Wireshark中开启捕获,在内网测试机上访问WEB服务器,查看捕获结果,再在网关防火墙上设置SNAT

  • 准备查看下centos服务器是用的那个防火墙管理工具,结果发现了问题 firewall是开启状态 但是这样看,firewall却是关闭状态,iptables是开启的 到底哪个是开启的,那个是关闭的啊? 新手,求帮助

  • Contributed by Joseph J. Barbish. Converted to SGML and updated by Brad Davis. 31.1. 入门 防火墙的存在, 使得过滤出入系统的数据流成为可能。防火墙可以使用一组或多组 “规则 (rules)”,来检查出入您的网络连接的数据包, 并决定允许或阻止它们通过。这些规则通常可以检查数据包的某个或某些特征,这些特征包括, 但

  • 我们有一个相当严格的网络分段策略。我正在使用云代工实例来部署应用程序。防火墙规则已经设置为从云代工实例中到达kafka集群。我相信防火墙规则也已经设置为到达动物园管理员实例。我需要实际确认一下。 我的问题似乎是我可以向kafka生成消息,但我的消费者似乎没有取件。它似乎在“轮询”时挂起。 对于我的防火墙规则,是否有一些隐藏的主机或端口需要处理,而不仅仅是标准主机和kafka和zookeeper节点

  • 熟悉防火墙的都知道,防火墙一般放在网关上,用来隔离子网之间的访问。因此,防火墙即服务(FireWall as a Service)也是在网络节点上(具体说来是在路由器命名空间中)来实现。 目前,OpenStack 中实现防火墙还是基于 Linux 系统自带的 iptables,所以大家对于其性能和功能就不要抱太大的期望了。 一个可能混淆的概念是安全组(Security Group),安全组的对象是