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 / 问题 / 1063428
Accepted
pgr
pgr
Asked: 2021-05-14 03:40:20 +0800 CST2021-05-14 03:40:20 +0800 CST 2021-05-14 03:40:20 +0800 CST

特定端口范围的路由流量

  • 772

我有一个 Ubiquiti Dream Machine (UDM),它是一个项目的一部分,该项目正在用不同的拓扑替换网络拓扑。这涉及 Internet 流量和 VoIP(Asterisk)。在分阶段引入新拓扑的过程中,由于我们在配置 Asterisk 服务器时的限制,我有以下要求:

10.0.0.1在 UDM 上,我需要将端口中指向的所有 UDP 流量重新路由50000-55000到10.0.10.1接口上br8

我怀疑这可以通过 UI 实现,但我可以通过 SSH 访问 UDM,我可以在其中修改iptables和ip route配置。

在UDM上,路由表是这样的:

# ip route
10.0.0.0/24 dev br3 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev br5 proto kernel scope link src 10.0.1.1
10.0.2.0/24 dev br6 proto kernel scope link src 10.0.2.1
10.0.3.0/24 dev br4 proto kernel scope link src 10.0.3.1
10.0.10.0/24 dev br8 proto kernel scope link src 10.0.10.1
10.1.1.0/24 dev br0 proto kernel scope link src 10.1.1.1
10.2.2.0/24 dev br2 proto kernel scope link src 10.2.2.1
192.168.1.0/24 dev eth4 proto kernel scope link src 192.168.1.86

关于拓扑的重要说明:10.0.10.0/24 网络是新旧拓扑之间的 VoIP 流量桥接,旧的 VoIP 服务器具有以下路由表:

# ip route
192.168.1.248/29 dev eth1  proto kernel  scope link  src 192.168.1.250
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.1
10.0.1.0/24 dev eth3  proto kernel  scope link  src 10.0.1.1
10.0.10.0/24 dev eth2  proto kernel  scope link  src 10.0.10.10
10.0.0.0/8 via 10.0.10.1 dev eth2
default via 192.168.1.254 dev eth1

一些网络看起来有冲突,但它们并没有真正相互交谈。这两个服务器之间的唯一通信是br8连接到eth2旧服务器上的 UDM 上的 VLAN,仅用于 VoIP 流量。

路由正在按我的预期工作。VoIP 正在通过服务器10.0.10.10,从旧世界和新世界都可以看到。当我拨打 VoIP 电话时,SIP 协商正确进行,这意味着每部电话都能看到服务器并进行双向通话。

我唯一的问题是,当 RTP 语音流量开始流动时,有时其中一部电话(取决于发起呼叫的一方)将其发送到旧的 VoIP 服务器地址(原为 10.0.0.1)而不是新的 10.0。 10.10。尽管被重新配置为使用新地址,并且尽管刚刚与新地址进行了 SIP 协商,但仍会发生这种情况!这是一个星号配置问题,会在 SIP 邀请中发送错误的地址,从而欺骗电话。Asterisk 服务器认为这一切都是一样的,因为他自己的身份是 10.0.0.1 和 10.0.10.10,但这仅在旧世界中是正确的,在新世界中不是……

因此,在单向音频通话期间,我在 UDM 上看到了这种流量:

# tcpdump -q -n -c 20 -i any host 10.0.10.10 or host 10.0.2.1833 or host 10.0.10.47
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
12:20:55.545461 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.545461 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.545461 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.565464 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.565464 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.565464 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.570260 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570260 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570313 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570317 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570764 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570764 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570807 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.570810 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.571077 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.571077 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.571109 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.571111 IP 10.0.2.183.50030 > 10.0.10.10.54736: UDP, length 172
12:20:55.585465 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172
12:20:55.585465 IP 10.0.10.47.5032 > 10.0.0.1.50042: UDP, length 172

去 10.0.10.10 的流量可以,去 10.0.0.1 的流量不行。我想重定向它,但我需要你的帮助。

(我知道可以,甚至应该通过某种方式修复 Asterisk 服务器配置来尝试解决方案,但是那里有限制,我只负责重新路由解决方案。询问重新路由是我的唯一目的这里的问题)。

UDM 上的当前iptables 配置是这样的:

# iptables-save
# Generated by iptables-save v1.6.1 on Thu May 13 12:28:34 2021
*nat
:PREROUTING ACCEPT [149794:35652606]
:INPUT ACCEPT [59043:3818189]
:OUTPUT ACCEPT [205240:13204474]
:POSTROUTING ACCEPT [179113:10974505]
:UBIOS_INPUT_JUMP - [0:0]
:UBIOS_OUTPUT_JUMP - [0:0]
:UBIOS_POSTROUTING_JUMP - [0:0]
:UBIOS_POSTROUTING_USER_HOOK - [0:0]
:UBIOS_PREROUTING_JUMP - [0:0]
-A PREROUTING -j UBIOS_PREROUTING_JUMP
-A INPUT -j UBIOS_INPUT_JUMP
-A OUTPUT -j UBIOS_OUTPUT_JUMP
-A POSTROUTING -j UBIOS_POSTROUTING_JUMP
-A UBIOS_POSTROUTING_JUMP -j UBIOS_POSTROUTING_USER_HOOK
-A UBIOS_POSTROUTING_USER_HOOK -o eth4 -m comment --comment 00000001095216660481 -j MASQUERADE
COMMIT
# Completed on Thu May 13 12:28:34 2021
# Generated by iptables-save v1.6.1 on Thu May 13 12:28:34 2021
*mangle
:PREROUTING ACCEPT [21051971:19450922056]
:INPUT ACCEPT [11815594:10852127372]
:FORWARD ACCEPT [9222781:8597163389]
:OUTPUT ACCEPT [11762182:10802741148]
:POSTROUTING ACCEPT [21125153:19406413016]
COMMIT
# Completed on Thu May 13 12:28:34 2021
# Generated by iptables-save v1.6.1 on Thu May 13 12:28:34 2021
*filter
:INPUT ACCEPT [11703464:10819984868]
:FORWARD ACCEPT [9222781:8597163389]
:OUTPUT ACCEPT [11762124:10802734194]
:UBIOS_FORWARD_IN_USER - [0:0]
:UBIOS_FORWARD_JUMP - [0:0]
:UBIOS_FORWARD_OUT_USER - [0:0]
:UBIOS_FORWARD_USER_HOOK - [0:0]
:UBIOS_INPUT_JUMP - [0:0]
:UBIOS_INPUT_USER_HOOK - [0:0]
:UBIOS_IN_GEOIP - [0:0]
:UBIOS_LAN_IN_USER - [0:0]
:UBIOS_LAN_LOCAL_USER - [0:0]
:UBIOS_LAN_OUT_USER - [0:0]
:UBIOS_OUTPUT_JUMP - [0:0]
:UBIOS_OUTPUT_USER_HOOK - [0:0]
:UBIOS_OUT_GEOIP - [0:0]
:UBIOS_WAN_IN_USER - [0:0]
:UBIOS_WAN_LOCAL_USER - [0:0]
:UBIOS_WAN_OUT_USER - [0:0]
-A INPUT -j UBIOS_INPUT_JUMP
-A FORWARD -j UBIOS_FORWARD_JUMP
-A OUTPUT -j UBIOS_OUTPUT_JUMP
-A UBIOS_FORWARD_IN_USER -i eth4 -m comment --comment 00000001095216663481 -j UBIOS_WAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br0 -m comment --comment 00000001095216663482 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br2 -m comment --comment 00000001095216663483 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br3 -m comment --comment 00000001095216663484 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br4 -m comment --comment 00000001095216663485 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br5 -m comment --comment 00000001095216663486 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br6 -m comment --comment 00000001095216663487 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_IN_USER -i br8 -m comment --comment 00000001095216663488 -j UBIOS_LAN_IN_USER
-A UBIOS_FORWARD_JUMP -j UBIOS_FORWARD_USER_HOOK
-A UBIOS_FORWARD_OUT_USER -o eth4 -m comment --comment 00000001095216663481 -j UBIOS_WAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br0 -m comment --comment 00000001095216663482 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br2 -m comment --comment 00000001095216663483 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br3 -m comment --comment 00000001095216663484 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br4 -m comment --comment 00000001095216663485 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br5 -m comment --comment 00000001095216663486 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br6 -m comment --comment 00000001095216663487 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_OUT_USER -o br8 -m comment --comment 00000001095216663488 -j UBIOS_LAN_OUT_USER
-A UBIOS_FORWARD_USER_HOOK -m comment --comment 00000001095216663481 -j UBIOS_FORWARD_IN_USER
-A UBIOS_FORWARD_USER_HOOK -m comment --comment 00000001095216663482 -j UBIOS_FORWARD_OUT_USER
-A UBIOS_INPUT_JUMP -j UBIOS_INPUT_USER_HOOK
-A UBIOS_INPUT_USER_HOOK -i eth4 -m comment --comment 00000001095216663481 -j UBIOS_WAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br0 -m comment --comment 00000001095216663482 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br2 -m comment --comment 00000001095216663483 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br3 -m comment --comment 00000001095216663484 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br4 -m comment --comment 00000001095216663485 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br5 -m comment --comment 00000001095216663486 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br6 -m comment --comment 00000001095216663487 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_INPUT_USER_HOOK -i br8 -m comment --comment 00000001095216663488 -j UBIOS_LAN_LOCAL_USER
-A UBIOS_LAN_IN_USER -d 10.0.10.10/32 -j LOG
-A UBIOS_LAN_IN_USER -d 10.0.10.10/32 -m comment --comment 00000001095216662480 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.10.10/32 -j LOG
-A UBIOS_LAN_IN_USER -s 10.0.10.10/32 -m comment --comment 00000001095216662481 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.2.0/24 -m comment --comment 00000001095216666481 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.3.0/24 -m comment --comment 00000001095216666482 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.1.0/24 -m comment --comment 00000001095216666483 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.2.2.0/24 -m comment --comment 00000001095216666484 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.10.0/24 -m comment --comment 00000001095216666485 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.1.1.0/24 -m comment --comment 00000001095216666486 -j RETURN
-A UBIOS_LAN_IN_USER -s 10.0.0.0/24 -m comment --comment 00000001095216666487 -j RETURN
-A UBIOS_LAN_IN_USER -j LOG
-A UBIOS_LAN_IN_USER -m comment --comment 00000001097364144127 -j RETURN
-A UBIOS_LAN_LOCAL_USER -j LOG
-A UBIOS_LAN_LOCAL_USER -m comment --comment 00000001097364144127 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.0.2.0/24 -m comment --comment 00000001095216666481 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.0.3.0/24 -m comment --comment 00000001095216666482 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.0.1.0/24 -m comment --comment 00000001095216666483 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.2.2.0/24 -m comment --comment 00000001095216666484 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.0.10.0/24 -m comment --comment 00000001095216666485 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.1.1.0/24 -m comment --comment 00000001095216666486 -j RETURN
-A UBIOS_LAN_OUT_USER -d 10.0.0.0/24 -m comment --comment 00000001095216666487 -j RETURN
-A UBIOS_LAN_OUT_USER -j LOG
-A UBIOS_LAN_OUT_USER -m comment --comment 00000001097364144127 -j RETURN
-A UBIOS_WAN_IN_USER -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment 00000001095216663481 -j RETURN
-A UBIOS_WAN_IN_USER -m conntrack --ctstate INVALID -m comment --comment 00000001095216663482 -j DROP
-A UBIOS_WAN_IN_USER -m comment --comment 00000001097364144127 -j DROP
-A UBIOS_WAN_LOCAL_USER -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment 00000001095216663481 -j RETURN
-A UBIOS_WAN_LOCAL_USER -m conntrack --ctstate INVALID -m comment --comment 00000001095216663482 -j DROP
-A UBIOS_WAN_LOCAL_USER -m comment --comment 00000001097364144127 -j DROP
-A UBIOS_WAN_OUT_USER -m comment --comment 00000001097364144127 -j RETURN
COMMIT

我在网上阅读了关于按照以下方式做我想做的事情的可能性:

  • 标记要在 iptables 中路由的数据包(使用 mangle)
  • 为这些数据包使用第二个路由表(添加到 /etc/iproute2/rt_tables)
  • 调整该表以将东西发送到需要去的地方

虽然我了解一般概念,但我不是网络专家,我对这些概念不熟悉,我迷失在细节中。我不确定如何标记,以及在第二个表中需要重复多少主路由表。对于这些命令和配置,我将不胜感激。提前致谢!

那么,如何将 UDM 上指向的所有 UDP 流量10.0.0.1在端口中重新路由50000-55000到接口上的 10.0.10.1br8?

routing iptables sip
  • 2 2 个回答
  • 624 Views

2 个回答

  • Voted
  1. Falstone
    2021-05-18T00:49:47+08:002021-05-18T00:49:47+08:00

    这是“基于策略的路由”的任务 基于策略的路由允许您配置复杂的路由方案。例如,您可以根据各种标准路由数据包,例如源地址、数据包元数据和包括协议。

    我不确定是否可以在 UDM 上完成 - 但这里是 USG 的链接:

    https://help.ui.com/hc/en-us/articles/360005460813-UniFi-USG-Advanced-Policy-Based-Routing-

    • 1
  2. Best Answer
    pgr
    2021-05-22T04:08:35+08:002021-05-22T04:08:35+08:00

    我终于让它工作了,所以我将回答我自己的问题。描述为终端命令序列的解决方案不是永久性的,它不会在重新启动或升级后继续存在,但我想在教学上专注于路由解决方案(这是我的问题的标题)并将脚本的永久性问题留在最后(更简单地解释一下,因为互联网上还有其他地方可以帮助解决这个问题)。

    你应该和我一样并使用这个解决方案吗?可能不是。有“警告”,请参阅有关该问题的一些评论。我将尝试解释如何做路由技巧,但我不一定推荐它用于其他情况......

    创建一个新的路由表:

    echo "74 myroutes" >> /etc/iproute2/rt_tables
    

    检查与

    cat /etc/iproute2/rt_tables
    

    将默认路由添加到新路由表:

    ip route add default via 10.0.10.10 dev br8 table myroutes
    

    检查与

    ip route list table myroutes
    

    请注意,我可以保持这个非常简单,因为这里只有少数非常特定的数据包通过(仅通过特定端口到特定主机)。所以使用这张表的东西都可以朝着iptables同一个方向前进,因为它已经被标记彻底“预选”了,见下文。

    将选中的数据包标记在iptables

    iptables -t mangle -I PREROUTING -p udp -m udp --dport 50000:55000 -d 10.0.0.1  -j MARK --set-mark 0x74
    

    通过添加日志行来检查您的条件:

    iptables -t mangle -I PREROUTING -p udp -m udp --dport 50000:55000 -d 10.0.0.1  -j LOG --log-prefix "I just marked a packet: "
    

    (记得之后删除该行。要删除iptables我所做的破坏规则
    iptables -L -t mangle -n -v --line-numbers,然后使用规则编号来执行类似的操作 iptables -t mangle -D PREROUTING 2)

    确保在继续之前正确标记预期的数据包!

    用于ip rule告诉内核将您的新路由表用于那些标记的数据包

    所以我从这些规则开始:

    # ip rule list
    0:      from all lookup local
    32000:  from all lookup main
    32500:  from 192.168.1.86 lookup 201
    32766:  from all lookup 201
    32767:  from all lookup default
    

    我需要在第一个规则之前插入我的规则,这比添加新规则要复杂一些(感谢@AB 在使 `ip rule` 的优先级高于 `local`中提供的帮助)。

    警告一句,不要通过弄乱规则将自己锁定在服务器之外local,这会将您的所有网络破坏到 UDM 中。网络是进入 UDM 的唯一途径 :-)... 所以以下命令的顺序很重要,删除只能local在新的“首选项”位置添加相同的规则后完成:

    ip rule add pref 10 lookup local
    ip rule add pref 5 fwmark 0x74 lookup myroutes
    ip rule delete pref 0
    

    所以让我们检查一下我们现在有什么:

    # ip rule list
    5:      from all fwmark 0x74 lookup myroutes
    10:     from all lookup local
    32000:  from all lookup main
    32500:  from 192.168.1.86 lookup 201
    32766:  from all lookup 201
    32767:  from all lookup default
    

    通过对比这两个命令的结果进行检查:

    # ip route get 10.0.0.1
    local 10.0.0.1 dev lo src 10.0.0.1
        cache <local>
    
    # ip route get 10.0.0.1 mark 0x74
    10.0.0.1 via 10.0.10.10 dev br8 src 10.0.10.1 mark 0x74
        cache
    

    而已!现在一切正常,RTP 流量再次流向正确的位置,尽管 Asterisk 服务器的配置有问题。

    使更改在重新启动和升级后永久生效

    非常简短(不是这个问题的重点)这里是如何使这些更改在 Ubiquiti UDM 上永久生效。您必须首先安装udm-utilities并使用如下名称保存下面的脚本

    /mnt/data/on_boot.d/10-add-myroutes.sh
    

    并使用chmod 700. 它将作为root.

    下面的脚本在启动时执行上述命令。在需要的地方,有一些技巧可以确保它可以多次运行而不会创建重复的条目。

    #!/bin/sh
    
    # fail-safe mechanism in case our boot script is causing broken networking
    # and we need to reboot and rescue by killing script before it runs:
    sleep 180
    
    grep -qxF '74 myroutes' /etc/iproute2/rt_tables || echo "74 myroutes" >> /etc/iproute2/rt_tables
    
    ip route add default via 10.0.10.10 dev br8 table myroutes
    
    iptables -t mangle -C PREROUTING -p udp -m udp --dport 50000:55000 -d 10.0.0.1  -j MARK --set-mark 0x74 || iptables -t mangle -I PREROUTING -p udp -m udp --dport 50000:55000 -d 10.0.0.1  -j MARK
    
    ip rule list | grep $'10:\tfrom all lookup local' || ip rule add pref 10 lookup local
    ip rule list | grep $'5:\tfrom all fwmark 0x74 lookup myroutes' || ip rule add pref 5 fwmark 0x74 lookup myroutes
    
    # the following logic is a bit different: for safety, we want to ensure the delete only happens when the other "local" line is there
    ip rule list | grep $'10:\tfrom all lookup local' && ip rule delete pref 0
    

    ip rule delete pref 0如果进行更改,请在没有本地规则的情况下对您可能无法访问设备的部分非常小心。如果发生这种情况,请重新启动,在脚本一开始处于 3 分钟睡眠状态时快速重新登录,然后将其杀死(出于自卫!)。

    • 1

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • 将路由永久添加到 Solaris 10

  • Quagga 套件中的 ./configure --disable-zebra 代表什么?

  • 使用特定接口进行出站连接(Ubuntu 9.04)

  • Linux TC/策略路由工具

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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