AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 6989
Accepted
Glen Solsberry
Glen Solsberry
Asked: 2009-05-12 05:09:45 +0800 CST2009-05-12 05:09:45 +0800 CST 2009-05-12 05:09:45 +0800 CST

iptables 单个规则中的多个源 IP

  • 772

我想在 iptables(如果可能的话)中创建一个使用多个源 IP 地址的规则。这可能吗?

iptables
  • 7 7 个回答
  • 128387 Views

7 个回答

  • Voted
  1. Ali Pandidan
    2014-12-07T09:57:08+08:002014-12-07T09:57:08+08:00

    要在单个命令中添加多个源,我会这样做:

    iptables -t filter -A INPUT -s 192.168.1.1,2.2.2.2,10.10.10.10 -j ACCEPT
    

    iptables 会自动将其翻译成多个规则。

    • 139
  2. Tobia
    2016-11-04T04:08:47+08:002016-11-04T04:08:47+08:00

    最初的问题是从 2009 年 5 月开始的,但自 2011 年 5 月以来,Linux 内核有一个功能可以满足这种需求,称为ipset。

    下面是一个创建 ipset、为其添加地址、然后在防火墙规则中使用它的示例:

    ipset -N office365 iphash
    
    ipset -A office365 132.245.228.194
    ipset -A office365 132.245.77.34
    ipset -A office365 132.245.48.34
    ipset -A office365 132.245.68.242
    ipset -A office365 132.245.55.2
    ipset -A office365 40.101.17.98
    ipset -A office365 132.245.48.18
    ipset -A office365 132.245.229.114
    ipset -A office365 132.245.196.34
    ipset -A office365 132.245.56.114
    
    iptables -A OUTPUT -m set --match-set office365 dst -j ACCEPT
    

    请参阅man iptables和man ipset了解更多信息。

    • 20
  3. GGets
    2013-05-31T23:58:41+08:002013-05-31T23:58:41+08:00

    您可以将 iprange 模块与“--src-range”结合使用,例如:

    -A INPUT -i eth0 -m iprange --src-range 192.168.1.90-192.168.1.101 -j ACCEPT
    

    来源:iptables 1.4.7 手册页

       iprange
       This matches on a given arbitrary range of IP addresses.
    
       [!] --src-range from[-to]
              Match source IP in the specified range.
    
       [!] --dst-range from[-to]
              Match destination IP in the specified range.
    

    (我知道这就像一个 4 岁的问题,但只是为了回答任何在网上寻求这个问题的人)

    • 16
  4. Best Answer
    Dave Cheney
    2009-05-12T05:26:29+08:002009-05-12T05:26:29+08:00

    仅当您可以将所需的源 IP 聚合到连续范围内时,这才有可能。例如

    iptables -A INPUT -s 192.168.0.0/24 -d 192.168.0.5 -p tcp -j ACCEPT
    

    如果您找不到涵盖所需 IP 的通用网络掩码,则必须编写几个相同的规则来执行您想要的操作。

    有几个 iptables 框架可以处理编写 iptables 规则的低级别,允许您在更符号级别定义规则。Shorewall是大多数当前 linux 发行版附带的常见防火墙。

    • 14
  5. arjarj
    2013-06-01T00:04:22+08:002013-06-01T00:04:22+08:00

    除了 Bòss King 的注释之外,您还可以简单地指定几个用逗号分隔的地址:

    [!] -s, --source address[/mask][,...]
          Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address. Hostnames will be resolved once only, before the rule is submitted to the kernel.  Please note  that  specifying
          any  name  to  be resolved with a remote query such as DNS is a really bad idea.  The mask can be either a network mask or a plain number, specifying the number of 1's at the left side of the network mask.  Thus, a mask of 24 is equivalent to
          255.255.255.0.  A "!" argument before the address specification inverts the sense of the address. The flag --src is an alias for this option.  Multiple addresses can be specified, but this will expand to multiple rules (when adding with  -A),
          or will cause multiple rules to be deleted (with -D).
    
    • 5
  6. jj33
    2009-05-12T05:42:32+08:002009-05-12T05:42:32+08:00

    您可以定义多个链,以便可以组合独立的需求列表。我怀疑这正是你想要的,但它仍然很方便。我们使用它来按 IP 定义有效用户类型的列表,然后将端口限制应用于源网络。因此,例如:

    # Allow SMTP from anywhere
    -A tcp_inbound -p tcp -m tcp -s 0/0 --dport 25 -j allowed
    #
    # Define the set of IP ranges we'll send to the tcp_user_inbound chain
    -A tcp_inbound -p tcp -m tcp -s 172.19.1.0/24 -j tcp_user_inbound
    -A tcp_inbound -p tcp -m tcp -s 172.19.6.0/23 -j tcp_user_inbound
    -A tcp_inbound -p tcp -m tcp -s 172.19.8.0/24 -j tcp_user_inbound
    -A tcp_inbound -p tcp -m tcp -s 172.19.10.0/23 -j tcp_user_inbound
    -A tcp_inbound -p tcp -m tcp -s 172.19.12.0/23 -j tcp_user_inbound
    -A tcp_inbound -p tcp -m tcp -s 172.19.4.0/23 -j tcp_user_inbound
    #
    # Ports we allow access to based on a source-address prereq.
    # SSH
    -A tcp_user_inbound -p tcp -m tcp --dport 22 -j allowed
    # VNC
    -A tcp_user_inbound -p tcp -m tcp --dport 5950:5958 -j allowed
    # https
    -A tcp_user_inbound -p tcp -m tcp --dport 443 -j allowed
    
    • 4
  7. gam3
    2014-12-07T09:20:59+08:002014-12-07T09:20:59+08:00

    例如,假设您只想接受来自 10.0.0.2 或 192.168.1.2 的 SMTP 数据包。您可以使用以下规则:

      # create a new chain
      iptables --new-chain multiple_sources_smtp
      # send all SMTP connections to the new chain
      iptables --append INPUT --protocol tcp --dport 25 --jump multiple_sources_smtp
      # use the default INPUT rules for packets coming from allowed sources
      iptables --append multiple_sources_smtp --source 10.0.0.2 --jump RETURN
      iptables --append multiple_sources_smtp --source 192.168.1.2 --jump RETURN
      # drop packets from anywhere else
      iptables --append multiple_sources_smtp -j DROP
    

    或者作为的输出iptables-save

      # Generated by iptables-save v1.4.14 on Sat Dec  6 09:17:11 2014
      *filter
      :INPUT ACCEPT [32:13325]
      :FORWARD ACCEPT [0:0]
      :OUTPUT ACCEPT [25:3084]
      :multiple_sources_smtp - [0:0]
      -A INPUT -p tcp -m tcp --dport 25 -j multiple_sources_smtp
      -A multiple_sources_smtp -s 10.0.0.2/32 -j RETURN
      -A multiple_sources_smtp -s 192.168.1.2/32 -j RETURN
      -A multiple_sources_smtp -j DROP
      COMMIT
      # Completed on Sat Dec  6 09:17:11 2014
    
    • -1

相关问题

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve