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
    • 最新
    • 标签
主页 / user-33060

Martin's questions

Martin Hope
Martin
Asked: 2023-09-04 04:28:19 +0800 CST

了解与主板芯片组相关的 lsusb 输出

  • 5

我有一块采用Intel H97 芯片组的主板。该芯片组支持最多 8 个 USB 2.0 端口和最多 6 个 USB 3.0 端口。根据主板手册,它的 I/O 面板上有两个 USB 2.0 端口和四个 USB 3.0 端口,其余 USB 端口可通过主板上的连接器使用。现在,无论我将 USB 设备连接到后 I/O 面板上的 USB 2.0 或 3.0 端口,还是主板上的 USB 接头连接器,这些设备总是出现在总线的根集线器下#2。Mass Storage设备类型连接到主板 I/O 面板上的 USB 端口之一的示例:

# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 1: Dev 18, If 0, Class=Communications, Driver=cdc_ether, 480M
    |__ Port 1: Dev 18, If 1, Class=CDC Data, Driver=cdc_ether, 480M
    |__ Port 1: Dev 18, If 2, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 12: Dev 27, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
#

但是,巴士#1、#3和是什么#4?对于总线来说#4,似乎Linux Foundation 3.0 root hub连接了一种类型的设备:

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

对于总线#3,#1似乎连接了 8 端口(8p在 的输出中lsusb -t)Intel USB 2.0 集线器 ( 8087:8001) 和 6 端口 Intel USB 3.0( 8087:8009) 集线器:

Bus 003 Device 002: ID 8087:8001 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8009 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

#3我不知道这是否是巧合,但英特尔总线集线器和英特尔总线集线器中的端口数量#1加起来为 14。这与芯片组文档以及lsusb -tfor输出中看到的端口数量一致巴士#2。

lsusb
  • 1 个回答
  • 17 Views
Martin Hope
Martin
Asked: 2023-08-16 00:52:19 +0800 CST

如何理解nftables“添加@my_ssh_meter { ip Saddr限制速率10/秒}接受”规则?

  • 6
赏金将在 5 天后到期。此问题的答案有资格获得+100声誉奖励。 马丁想要奖励现有的答案。

nftables支持动态填充集,这些集记录在nftables wiki中。wiki 页面上的第一个示例如下:

table ip my_filter_table {
        set my_ssh_meter {
                type ipv4_addr
                size 65535
                flags dynamic
        }

        chain my_input_chain {
                type filter hook input priority filter; policy accept;
                tcp dport 22 ct state new add @my_ssh_meter { ip saddr limit rate 10/second } accept
        }
}

nftables上面的配置解释如下:

在此示例中,我们创建一条规则来匹配新的 TCP ssh(端口 22)连接,该规则使用名为 my_ssh_meter 的动态集将每个源 IP 地址的流量速率限制为每秒 10 个连接。

如何解读这条规则或者如何理解它?我的意思是,如果 Linux 连接跟踪子系统看到到 TCP 目标端口 22( ) 的新连接 ( ip saddr),则带有数据的源 IP 地址 ( )limit rate 10/second会添加到命名集中。不过这套好像从来没用过?填充集合时执行的操作是否成功?my_ssh_meterct state newtcp dport 22my_ssh_meteraccept

nftables
  • 1 个回答
  • 98 Views
Martin Hope
Martin
Asked: 2022-12-07 08:22:44 +0800 CST

保持辅助 IPv4 地址与主 IPv4 地址具有相同子网掩码有什么好处?

  • 5

比方说,我有一个eth0带有 IPv4 地址接口的服务器192.168.0.1/24。我有一个应用程序在这个服务器上运行,它必须绑定到192.168.0.0/24网络中的另一个 IPv4 地址,但是在服务器上运行的其余应用程序需要继续192.168.0.1用作出口连接的源地址。比方说,这个另一个地址必须是192.168.0.2. 我可以添加192.168.0.2/24并eth0确保ip route change default via 192.168.0.254 dev eth0 src 192.168.0.1默认情况下传出连接192.168.0.1用作源地址。或者,我可以添加192.168.0.2/32而不是添加192.168.0.2/24到eth0,这样我就不需要触及路由表了。

保持次要地址与主地址具有相同的子网掩码有什么好处吗?192.168.0.2/32或者更具体地说,根据我的例子,在网络接口上配置而不是在配置上有什么区别192.168.0.2/24?

networking
  • 1 个回答
  • 35 Views
Martin Hope
Martin
Asked: 2022-01-25 04:40:37 +0800 CST

禁用 Web 浏览器的 CGI 脚本缓冲

  • 0

我有一个用 Perl 编写的小型 CGI 脚本,它以 1 秒的间隔打印从 1 到 10 的数字:

root@debian-s-1vcpu-1gb-fra1-01:~# cat /usr/lib/cgi-bin/test
#!/usr/bin/perl

use strict;
local $|=1;

print "Content-encoding: none\nContent-type: text/plain\n\n";
#print "Content-type: text/plain\n\n";

for ( my $i = 1 ; $i <= 10 ; $i++ ) {
    print "$i\n";
    sleep(1);
}
root@debian-s-1vcpu-1gb-fra1-01:~#

该脚本在使用时按预期工作curl:

卷曲 7.64.0 示例

但是,对于 Web 浏览器(例如 Chromium 88.0.4324.182 或 Firefox 78.13.0esr),页面加载 10 秒,然后立即显示从 1 到 10 的数字。Web 浏览器的请求和响应标头如下所示:

Firefox 78.13.0esr 示例

即使我使用与上面示例curl相同的请求标头执行Firefox,数字也会以 1 秒的间隔打印,因为它们应该:

$ curl -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Encoding:
gzip, deflate' -H 'Accept-Language: en-US,en;q=0.5' -H 'Connection: keep-alive' -H 'Host: 164.90.236.255' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0' -v http://164.90.236.255/cgi-bin/test
* Expire in 0 ms for 6 (transfer 0x55b238016fb0)
*   Trying 164.90.236.255...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55b238016fb0)
* Connected to 164.90.236.255 (164.90.236.255) port 80 (#0)
> GET /cgi-bin/test HTTP/1.1
> Host: 164.90.236.255
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
> Accept-Encoding: gzip, deflate
> Accept-Language: en-US,en;q=0.5
> Connection: keep-alive
> Upgrade-Insecure-Requests: 1
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
>
< HTTP/1.1 200 OK
< Date: Mon, 24 Jan 2022 12:19:56 GMT
< Server: Apache/2.4.25 (Debian)
< Content-encoding: none
< Keep-Alive: timeout=5, max=100
< Connection: Keep-Alive
< Transfer-Encoding: chunked
< Content-Type: text/plain
<
1
2
3
4
5
6
7
8
9
10
* Connection #0 to host 164.90.236.255 left intact
$ 

服务器已Apache 2.4.25禁用mod_deflate。

什么可能导致这种行为?如何在 Web 浏览器中禁用 CGI 脚本缓冲?也许有一个响应头允许人们控制这种行为。

apache-httpd curl
  • 1 个回答
  • 154 Views
Martin Hope
Martin
Asked: 2020-02-14 08:55:11 +0800 CST

在 NAT 网关中配置 SNAT 源地址有什么意义吗?

  • 1

假设一个具有以下网络拓扑: NAT 网关网络设置

NAT 网关linux-router具有以下 SNAT 规则:

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  10.99.99.50          anywhere             to:1.1.1.6

此外,如图所示,1.1.1.6地址是在lo接口上配置的。从技术上讲,这不是必需的,即可以删除它并且linux-svr仍然具有连接性。那么,是否有必要在 NAT 网关中配置 SNAT 源地址?1.1.1.6仅用于故障排除目的,因为它更容易关联和追溯linux-svr?

iptables nat
  • 1 个回答
  • 2061 Views
Martin Hope
Martin
Asked: 2019-12-14 08:17:47 +0800 CST

替换 iptables 规则而不给出规则编号

  • 2

如果添加的规则与链中已经存在的规则相同,是否可以通过覆盖现有规则来替换iptables规则而不给出规则编号或插入/附加规则?我问的原因是我有一个自动添加iptables规则的脚本,并且可能存在添加的规则与链中已经存在的规则相同的情况。

iptables
  • 1 个回答
  • 960 Views
Martin Hope
Martin
Asked: 2019-12-09 13:09:32 +0800 CST

看门狗守护程序无法重置 Supermicro X9DR3-F 主板上的硬件看门狗定时器

  • 4

我有一块Supermicro X9DR3-F 主板,其中JWD跳线针 1 和 2 短路并且 UEFI 中的看门狗功能已启用: 超微 UEFI

这意味着如果没有重置硬件看门狗定时器,系统将在大约 5 分钟后重置。我安装了watchdog守护进程并将其配置为使用iTCO_wdt驱动程序:

$ cat /etc/default/watchdog 
# Start watchdog at boot time? 0 or 1
run_watchdog=1
# Start wd_keepalive after stopping watchdog? 0 or 1
run_wd_keepalive=1
# Load module before starting watchdog
watchdog_module="iTCO_wdt"
# Specify additional watchdog options here (see manpage).
$ 

当watchdog守护程序启动时,驱动程序加载没有问题:

$ sudo dmesg | grep iTCO_wdt
[   17.435620] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[   17.435667] iTCO_wdt: Found a Patsburg TCO device (Version=2, TCOBASE=0x0460)
[   17.435761] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
$ 

此外,该/dev/watchdog文件存在:

$ ls -l /dev/watchdog
crw------- 1 root root 10, 130 Dec  8 22:36 /dev/watchdog
$ 

watchdog-device守护程序配置中的选项watchdog指向此文件:

$ grep -v ^# /etc/watchdog.conf 



watchdog-device    = /dev/watchdog
watchdog-timeout   = 60


interval           = 5
log-dir            = /var/log/watchdog
verbose            = yes
realtime           = yes
priority           = 1

heartbeat-file     = /var/log/watchdog/heartbeat
heartbeat-stamps   = 1000
$ 

为了调试对看门狗设备的写入,我启用heartbeat-file了选项并看起来发送了 keepalive 消息/dev/watchdog:

$ tail /var/log/watchdog/heartbeat
 1575830728
 1575830728
 1575830728
 1575830733
 1575830733
 1575830733
 1575830733
 1575830733
 1575830733
 1575830733
$ 

然而,尽管如此,服务器会以大约五分钟的间隔自行重置。

我的下一个想法是iTCO_wdt驱动程序控制C606 芯片组中的看门狗,而重置服务器的看门狗是 IPMI 的一部分。因此,我确保iTCO_wdt在引导期间未加载驱动程序并重新启动服务器。很公平,/dev/watchdog不再存在。现在我加载了ipmi_watchdog模块:

$ ls -l /dev/watchdog
ls: cannot access '/dev/watchdog': No such file or directory
$ sudo modprobe ipmi_watchdog
$ sudo dmesg -T | tail -1
[Tue Dec 10 21:12:48 2019] IPMI Watchdog: driver initialized
$ ls -l /dev/watchdog
crw------- 1 root root 10, 130 Dec 10 21:12 /dev/watchdog
$ 

..最后启动了watchdog基于/var/log/watchdog/heartbeat文件写入的守护进程,/dev/watchdog间隔为5s。此外,可以通过以下方式确认这一点strace:

$ ps -p 2296 -f
UID        PID  PPID  C STIME TTY          TIME CMD
root      2296     1  0 01:28 ?        00:00:00 /usr/sbin/watchdog
$ sudo strace -y -p 2296
strace: Process 2296 attached
restart_syscall(<... resuming interrupted nanosleep ...>) = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
open("/proc/uptime", O_RDONLY)          = 2</proc/uptime>
close(2</proc/uptime>)                  = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
nanosleep({5, 0}, NULL)                 = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
open("/proc/uptime", O_RDONLY)          = 2</proc/uptime>
close(2</proc/uptime>)                  = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
nanosleep({5, 0}, NULL)                 = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
open("/proc/uptime", O_RDONLY)          = 2</proc/uptime>
close(2</proc/uptime>)                  = 0
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
write(1</dev/watchdog>, "\0", 1)        = 1
nanosleep({5, 0}, ^Cstrace: Process 2296 detached
 <detached ...>
$

watchdog上面带有 PID 的守护进程是以注释掉选项 in的2296方式启动的,以减少.heartbeat-file/etc/watchdog.confwritestrace

但是,服务器仍会以大约 300 秒的间隔重新启动。

为什么看门狗守护程序不能重置 Supermicro X9DR3-F 主板上的硬件看门狗定时器?

debian watchdog
  • 2 个回答
  • 1844 Views
Martin Hope
Martin
Asked: 2019-12-04 08:10:10 +0800 CST

systemd per-user 实例不会自动启动服务单元

  • 4

我希望systemd每个用户实例在启动时启动以下服务单元:

user.name@svr:~$ systemctl --user cat tmux
# /etc/systemd/user/tmux.service
[Unit]
Description=Start tmux in detached session

[Service]
Type=forking
ExecStart=/usr/bin/tmux new-session -s test -d
ExecStop=/usr/bin/tmux kill-session -t test
Restart=always
RestartSec=1

[Install]
WantedBy=default.target
user.name@svr:~$

启用延迟:

user.name@svr:~$ sudo loginctl show-user user.name | grep Linger=
Linger=yes
user.name@svr:~$

但是,当我重新启动服务器时,服务没有启动:

user.name@svr:~$ systemctl --user status tmux
● tmux.service - Start tmux in detached session
   Loaded: loaded (/etc/systemd/user/tmux.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
user.name@svr:~$

tmux我可以手动启动服务,systemctl --user status tmux没有任何问题。此外,根据systemctl --user status每个systemd用户实例本身正在运行:

user.name@svr:~$ systemctl --user status 
● svr
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Tue 2019-12-03 22:02:41 UTC; 15min ago
   CGroup: /user.slice/user-1000.slice/[email protected]
           └─init.scope
             ├─456 /lib/systemd/systemd --user
             └─462 (sd-pam)
user.name@svr:~$ 

这应该意味着 Linux PAM 配置没有问题。

为什么 systemd per-user 实例不自动启动服务单元?

debian systemd
  • 1 个回答
  • 674 Views
Martin Hope
Martin
Asked: 2019-09-14 06:11:35 +0800 CST

将虚拟化以太网接口链路状态从 qemu 客户机传播到主机

  • 0

是否可以将以太网接口链路状态从客户机传播到主机,即如果ip l set dev eth0 down在客户机中这样做,那么在主机中会触发某些事情?virsh domif-getlink <domain> <int>或 qemu 日志文件不显示这一点。

qemu
  • 1 个回答
  • 174 Views
Martin Hope
Martin
Asked: 2019-06-11 01:47:47 +0800 CST

入侵检测系统 (IDS) 在有防火墙的 Web 服务器上有意义吗?

  • 0

我在具有状态防火墙的服务器上运行 Apache,其中仅允许 TCP 端口 80 和 443 的新 IPv4/IPv6 入口连接。SSH 仅允许来自少数受信任的主机,并且仅允许某些 ICMP/ICMPv6 消息和 UDP 目标端口 33434 - 33534( UDP 模式下的 traceroute)在任何地方都允许。传出流量没有防火墙。在服务器上的这种环境中是否有运行 IDS(例如 Snort)的点?如果是,那么它会减轻什么或提供什么额外的可见性?

security iptables
  • 1 个回答
  • 82 Views
Martin Hope
Martin
Asked: 2019-05-16 05:24:35 +0800 CST

“systemctl start”不会启动反向依赖单元,而“systemctl restart”会启动

  • 3

我有一个 systemdfw.service单元文件,需要networking.service:

# systemctl show networking -p Requires
Requires=system.slice fw.service
# 

当networking.service处于该active状态并且我执行systemctl stop fw然后几秒钟后systemctl start fw,则networking.service保持该inactive (dead)状态。但是,当networking.service处于active状态并且我执行systemctl restart fw时,networking.service也会重新启动。

这是预期的行为吗?我认为systemctl restart基本上是systemctl stop跟着systemctl start,因此systemctl start也应该启动networking.service.

systemd
  • 1 个回答
  • 521 Views
Martin Hope
Martin
Asked: 2019-05-13 14:16:04 +0800 CST

是否需要在“Wants=”和“After=”行上都指定一个 systemd 单元,或者“After=”是否足够?

  • 2

假设我有一个 systemd 服务类型的单元,它包含以下Wants=和After=语句:

Wants=foo.service
After=foo.service

如果它已经打开,foo.service我真的需要指定它吗?或者可能是需要的,因为如果没有单位指定as或,那么根本就没有开始?Wants=After=Wants=foo.servicefoo.serviceWants=Requires=foo.service

systemd
  • 1 个回答
  • 247 Views
Martin Hope
Martin
Asked: 2019-04-27 00:12:44 +0800 CST

了解 virt-install 如何将主机中的以太网接口与任务中的以太网接口连接起来?

  • 2

我安装 Debian 虚拟机virt-install的方式是让来宾获得一个名为的以太网接口vnet0:

$ virsh domiflist git-server
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br-ext     rtl8139     52:54:00:a8:32:d7

$ 

这可以在检查qemu命令行时确认:

-netdev tap,fd=27,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:a8:32:d7,bus=pci.0,addr=0x2

但是,主机中有一个同名的 TAP 设备vnet0:

$ ethtool -i vnet0                                                                                  
driver: tun
version: 1.6
firmware-version: 
expansion-rom-version: 
bus-info: tap
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
$ 

..但具有不同的MAC地址:

$ ip l sh vnet0                                                                                     
56: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br-ext state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether fe:54:00:a8:32:d7 brd ff:ff:ff:ff:ff:ff
$ 

虚拟机接口和主机中的 TAP 设备究竟是如何连接的?还是只有一台 TAP 设备?如果是,那么 MAC 地址有何不同?

networking qemu
  • 1 个回答
  • 1008 Views
Martin Hope
Martin
Asked: 2019-02-23 00:26:57 +0800 CST

用于脚本的安全只读自托管 git 存储库

  • 4

我需要构建一个 git 服务器,其中某些用户对存储库具有读写访问权限,并且使用此存储库运行某些脚本的管理服务器对 git 服务器中的同一存储库具有只读访问权限:

git 服务器拓扑

设置应尽可能安全。目前,我使用gitolite完成了此操作,其中devices存储库具有以下配置:

repo devices
    RW     =   eng1
    RW     =   eng2
    RW     =   eng3
    R      =   graphs

用户的SSH 密钥对graphs存储在mgmt-svr用户graphs主目录的服务器中,私钥仅对用户可读和可写graphs。此私钥不受密码保护。

有没有更安全的方法来实现这一点?我考虑过使用 HTTPS 访问devicesgit 服务器中的存储库和基本访问身份验证,但我看不出与当前基于 SSH 的设置相比有任何优势——我仍然需要将访问凭据存储在用户graphs主目录中的某个位置。

security git
  • 2 个回答
  • 431 Views
Martin Hope
Martin
Asked: 2018-09-25 06:35:53 +0800 CST

使用 virt-install 在虚拟机上为虚拟设备配置串行控制台

  • 5

我有一个虚拟设备(qcow2图像),它需要 VM 上的串行控制台。换句话说,我不需要安装任何东西。我只需要从这个qcow2磁盘启动虚拟机并通过串行接口访问虚拟设备。有可能做到这一点virt-install吗?当我添加--extra-args="console=ttyS0,115200"tovirt-install时,它需要我指定一个--location. 是否有解决方法可以使用 启动启用串行的虚拟机virt-install,但不指定分发树安装源?

qemu libvirt
  • 1 个回答
  • 6243 Views
Martin Hope
Martin
Asked: 2018-08-24 04:27:45 +0800 CST

在初始化环回接口之前加载所有防火墙规则是否有任何缺点或危险?

  • 3

我有相当复杂的iptables/ip6tables影响多个接口的规则。我想确保防火墙规则始终有效。由于甚至可以为(在那一刻)不存在的接口(例如iptables -A INPUT -i eth999 -j ACCEPT)创建规则,因此我认为我不会将规则与物理接口相关联,而是与lo始终存在的接口相关联:

# head /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
        pre-up /sbin/iptables-restore < /etc/network/IPv4_fw_rules
        pre-up /sbin/ip6tables-restore < /etc/network/IPv6_fw_rules
#

这有什么缺点吗?

debian iptables
  • 1 个回答
  • 89 Views
Martin Hope
Martin
Asked: 2018-08-13 12:03:03 +0800 CST

如何找到tap接口与其文件描述符之间的连接?

  • 5

我有一个qemu由编排脚本启动的 VM,它创建了临时tap接口。当我检查进程的命令行参数时qemu-system-x86_64,我可以看到,该进程tap使用文件描述符连接到已打开的接口27:

-netdev tap,fd=27,id=hostnet1,vhost=on,vhostfd=28

照ls -l /proc/<qemu-system-x86_64_PID>/fd/27它点来/dev/net/tun。

它是否以某种方式以将tap接口名称(例如vnet99)传递给/dev/net/tunwithioctl()并返回正确的 fd 的方式工作?或者一般来说,如何找出tap主机中的哪个接口具有文件描述符 27?

linux-kernel qemu
  • 2 个回答
  • 2458 Views
Martin Hope
Martin
Asked: 2018-08-07 14:48:15 +0800 CST

Web 浏览器在 Ubuntu 14.04.5 LTS 中默认放大

  • 2

我遇到了一种奇怪的行为,其中 Chromium(61.0 版)和 Firefox(54.0 版)似乎默认放大,而其他应用程序则没有。例如,在这里,我在 Web 浏览器和feh图像查看器中打开了相同的 png 图像文件:

2]

如上所示,Web 浏览器中的图像(插入 GitHubREADME.md文件)被拉伸。但是,Chromium 和 Firefox 中的缩放设置都是 100%,即没有放大或缩小。当我使用 Web 开发人员工具检查此图像时,分辨率是正确的:880x150px。我什至创建了一个新的 Firefox 配置文件(firefox -p test)并--safe-mode在该配置文件下启动了 Firefox,但这并没有帮助。

xrandr输出如下所示:

$ xrandr 
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected 3840x2160+0+0 (normal left inverted right x axis y axis) 610mm x 350mm
   3840x2160      60.0*+
   2560x1440      60.0  
   1920x1080      60.0     59.9  
   1680x1050      60.0  
   1600x900       60.0  
   1440x900       59.9  
   1280x1024      75.0     60.0  
   1280x800       59.8  
   1280x720       60.0  
   1152x864       75.0  
   1024x768       75.0     70.1     60.0  
   800x600        75.0     72.2     60.3     56.2  
   640x480        75.0     72.8     59.9  
DP-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
$ 

当我用我的笔记本电脑(Chromium 63.0 和 1920x1080px 分辨率)检查同一个 GitHub 页面时,该图像没有被拉伸。

什么可能导致这种行为?

x11 firefox
  • 1 个回答
  • 335 Views
Martin Hope
Martin
Asked: 2018-03-24 05:08:05 +0800 CST

iptables 多端口模块是否比多个单独的规则提供性能优势?

  • 5

多端口模块是否iptables提供优于多个单独规则的性能优势?换句话说,是这样的:

iptables -A INPUT -p tcp -m multiport --sports 1,2,3,4,5,6,7,8,9,10,11,12,13,14,80 -j ACCEPT

..比这更有效:

iptables -A INPUT -p tcp --sport 1 -j ACCEPT
iptables -A INPUT -p tcp --sport 2 -j ACCEPT
iptables -A INPUT -p tcp --sport 3 -j ACCEPT
iptables -A INPUT -p tcp --sport 4 -j ACCEPT
iptables -A INPUT -p tcp --sport 5 -j ACCEPT
iptables -A INPUT -p tcp --sport 6 -j ACCEPT
iptables -A INPUT -p tcp --sport 7 -j ACCEPT
iptables -A INPUT -p tcp --sport 8 -j ACCEPT
iptables -A INPUT -p tcp --sport 9 -j ACCEPT
iptables -A INPUT -p tcp --sport 10 -j ACCEPT
iptables -A INPUT -p tcp --sport 11 -j ACCEPT
iptables -A INPUT -p tcp --sport 12 -j ACCEPT
iptables -A INPUT -p tcp --sport 13 -j ACCEPT
iptables -A INPUT -p tcp --sport 14 -j ACCEPT
iptables -A INPUT -p tcp --sport 80 -j ACCEPT

在第一种情况下,每个包都检查tcp和multiport模块,但只有一个规则。在第二种情况下,为每个包检查 15 条规则,但对于每个规则,只tcp处理模块。

我做了以下简单的网络拓扑:

server1[eth2] <--> [enp0s31f6]server2

eth2inserver1和enp0s31f6in都是server21GigE 网络适配器,它们使用 5m Cat5e 电缆连接。server1当我从没有任何防火墙规则的情况下下载 10000 MiB 文件时server2,吞吐量为 942Mbps。然后我生成了 4369 条这样的规则:

for i in {1..65535}; do if ((i%15 == 0)); then iptables -A INPUT -p tcp -m multiport --sports $p$i -j ACCEPT; p=; else p=$p$i,; fi; done

这意味着有 4369multiport条规则,每条规则中有 15 个端口。例如:

# iptables -L INPUT 1 -v -n --line-numbers 
1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport sports 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
# iptables -L INPUT 4369 -v -n --line-numbers 
4369     0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport sports 65521,65522,65523,65524,65525,65526,65527,65528,65529,65530,65531,65532,65533,65534,65535
# 

现在当我执行wget --report-speed=bits -4 -O /dev/null 10.10.10.1:65535时server2,令我惊讶的是,吞吐量仍然是 942Mbps。下一步,我刷新了INPUT链并生成了 65535 条规则,如下所示:

for i in {1..65535}; do iptables -A INPUT -p tcp --sport $i -j ACCEPT; done

我再次执行wget --report-speed=bits -4 -O /dev/null 10.10.10.1:65535,server2现在吞吐量下降到 580Mbps。那么我是否正确,在极端情况下,该multiport方法更有效?但是,在没有几万条规则或几十Gbps流量的正常情况下,有没有实际的区别?

iptables
  • 2 个回答
  • 2484 Views
Martin Hope
Martin
Asked: 2018-03-22 08:34:45 +0800 CST

使用“--syn”匹配新 TCP 连接的优势

  • 2

我在几个iptables示例中看到了用于匹配新连接的类似技术:

-A INPUT -p tcp -m tcp --dport 443 --syn -m conntrack --ctstate NEW -j SSH

如上所示,tcp除了模块之外--ctstate NEW,conntrack模块还根据 TCP 标志(SYN 必须为 1 和 RST、ACK 和 FIN 0)检查 TCP 连接。它是否提供了任何优势:

-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j SSH

我的假设是它确实如此,因为匹配模块是按照它们在规则中指定的顺序进行评估的,如果没有--syn,所有到端口 443 的 TCP 数据包都将在tcp模块之间传递conntrack。换句话说,--syn应该提供这种快速失败的范例。

tcp iptables
  • 1 个回答
  • 757 Views

Sidebar

Stats

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

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve