AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / 问题

All perguntas(server)

Martin Hope
Lifeboy
Asked: 2025-03-12 02:35:32 +0800 CST

Nginx e acne.sh LE certs: Erro de verificação: Resposta inválida de .well-known/acme-challenge

  • 6

Estou usando acme.sh para criar um certificado para um servidor mais antigo, que preciso executar por vários motivos. No entanto, estou esquecendo de algo sobre a parte .well-known/acme-challenge.

Quando executo o script:

acme.sh --issue --nginx -d fish.pre.imb.co --test --debug 2 

Recebo um erro:

fish.pre.imb.co:Verify error:197.214.119.177: Invalid response from https://fish.pre.imb.co/.well-known/acme-challenge/0wDIf77g9i9U1fx75tGX9UEOK_d4-A3ZdORclyTd14k: 404

Entretanto, se eu colocar um arquivo com o nome da consulta acima no diretório, ele será resolvido sem problemas.

Aqui está meu arquivo de configuração nginx:

upstream puma_fisheagle {
        server 192.168.abc.xyz:1234 max_fails=3 fail_timeout=30s;
}

# IMB external system api server setup.
server {
        resolver_timeout 10s;

        server_name fish.pre.imb.co;
        root /var/local/www/fisheagle/public;
        access_log /var/log/nginx/fisheagle.log;
        rewrite_log on;
        try_files $uri/index.html $uri @puma_fisheagle;

        location @puma_fisheagle {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_read_timeout  1800s;
                proxy_redirect off;
                proxy_pass http://puma_fisheagle;
                proxy_connect_timeout   2;
        }
    
        location /.well-known/acme-challenge {
                default_type "text/plain";
                allow all;
                root /var/local/www/acme;
        }

    location /nginx_status {
        stub_status on;
        access_log off;
        allow 192.168.abc.0/24; 
    #   deny all;
    }
    
        error_page 404 /404.html;
        error_page 422 /422.html;
        error_page 500 503 504 /500.html;
        error_page 502 /502.html;
        client_max_body_size 10m;
        keepalive_timeout 10m;

    listen              443 ssl;

    ssl_certificate      /etc/acme.sh/certs/fish.pre.imb.co/fullchain.cer;
    ssl_certificate_key  /etc/acme.sh/certs/fish.pre.imb.co/fish.pre.imb.co.key;
        # intermediate configuration
        # old configuration
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/private/ffdhe4096.pem;
    ssl_ecdh_curve secp384r1;
    ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
    ssl_session_timeout 60m;
    ssl_session_cache shared:SSL:50m;
}

server {
    if ($host = fish.pre.imb.co) {
        return 301 https://$host$request_uri;
    }

    server_name fish.pre.imb.co;

    listen 80;
    return 404;
}

Então parece que o acme não consegue gravar o arquivo no diretório? Quer dizer, se eu escrevê-lo manualmente, o config lê.

O que estou perdendo?

Aqui está o arquivo de depuração acme.sh: https://pastebin.com/6zHGAprA

nginx
  • 1 respostas
  • 120 Views
Martin Hope
darth_alexious
Asked: 2025-03-11 04:45:01 +0800 CST

Conectando-se à Internet a partir de uma máquina Debian Linux em ponte?

  • 6

Máquina: Linux Debian 12.8

duas interfaces Ethernet

  • enp2s0 - conectado ao roteador do ISP
  • enp4s0 - conectado ao switch LAN

Enquanto estou em ponte, posso acessar a Internet de qualquer máquina na LAN, no entanto, não consigo acessar a Internet da máquina em ponte.

Se eu derrubar a ponte, a Internet é restaurada na máquina, mas é claro que ela perde sua finalidade porque perde a conexão entre as duas interfaces Ethernet.

  • Não preciso necessariamente de uma ponte, só preciso colocar esse equipamento como um dispositivo de segurança para minha rede e fazer o tráfego passar por ele.
  • Quero que a própria máquina possa se conectar à Internet e qualquer outra máquina na LAN também.
  • Se ajudar, também tenho na mesma máquina uma interface sem fio chamada wlp3s0
  • Também tenho o firewalld instalado (seja habilitado/desabilitado, o resultado é sempre o mesmo)

Obrigado por qualquer ajuda.

editar: segmento /etc/network/interfaces para a ponte:

auto br0
iface br0 inet static
        bridge_ports enp2s0 enp4s0
        address 192.168.22.2
        broadcast 192.168.22.255
        netmask 255.255.255.0
        gateway 192.168.22.1
linux
  • 2 respostas
  • 163 Views
Martin Hope
Srikanth Chilivery
Asked: 2025-03-10 21:23:23 +0800 CST

Medição de precisão de sincronização de tempo no Linux (chrony) e Windows (w32time)

  • 5

Tenho um servidor NTP no Windows 10 que o utiliza LOCAL CLOCKcomo referência. Ele possui clientes NTP para Windows 10 e Linux.

Os nós do Windows usam o serviço Windows Time (cliente e servidor), os clientes Linux usam o chrony.

arquitetura

Questões:

  1. O método está correto para medição de precisão em nós do Windows?

    Um artigo de conhecimento para sistemas operacionais Windows As condições de contorno para o método de sistemas de alta precisão consistem em calcular a latência unidirecional (distância raiz) juntamente com outros critérios mencionados no link fornecido acima.

    Abaixo está o método que estou usando. Ele mostra que a precisão chega a 0,5 milissegundos. Ouvi dizer que o NTP não pode ser tão preciso, e estou duvidando da metodologia.

(Average(RTT calculation from Win10NTPClient to NTPServer)/2)

  1. O método está correto para nós NTP Linux que usam chrony? Estou tentando entender o método em " Qual a precisão do meu relógio do sistema?"

    A última coluna do arquivo \var\log\chrony\tracking.logapresenta o erro máximo. Como interpreto isso como precisão? Essa suposição está correta?

  2. Por que o chrony e o Windows têm metodologias diferentes mesmo usando o protocolo NTP?

Por favor, me ajude a entender esses conceitos. Só ouço falar de métodos diferentes, alguns se referindo apenas ao uso de NTPOffset, e esse valor é muito pequeno (em nanossegundos), o que me deixa em dúvida.

ntp
  • 1 respostas
  • 114 Views
Martin Hope
wolfsblu
Asked: 2025-03-10 19:25:47 +0800 CST

Impedir resolução de DNS Tailscale dentro do contêiner Podman

  • 5

Para contexto: estou usando contêineres Podman (rootful) no meu host, que também está conectado a uma Tailscale VPN. O DNS do host é configurado via systemd-resolved.

Desde ontem, tenho lutado com meu contêiner Roundcube (cliente de e-mail da web) extremamente lento para se conectar ao contêiner do meu servidor de e-mail, cada ação (logar, listar pastas, abrir uma mensagem) carregava pelo menos 5 segundos. Então, percebi que cada contêiner /etc/resolv.confcomeçará com as seguintes linhas sempre que o contêiner for iniciado enquanto o Tailscale estiver habilitado:

search headscale.ts.net
nameserver 100.100.100.100
...

Presumo que seja por isso que o contêiner Roundcube primeiro tenta resolver o nome de domínio do servidor de e-mail via Tailscale, o que demora um pouco e depois falha, antes de finalmente resolver o domínio corretamente usando os outros servidores DNS.

Assim que desligo o Tailscale e reinicio o contêiner, tudo funciona perfeitamente e ele /etc/resolv.confnão contém mais o servidor DNS do Tailscale.

Não tenho certeza de como resolver isso, então minha(s) pergunta(s) seria(m):

  1. Existe alguma maneira de configurar os contêineres para ignorar a resolução de DNS do Tailscale para domínios que não sejam do Tailscale
  2. Como posso dizer ao contêiner para não usar os servidores DNS do Tailscale enquanto ainda o tenho habilitado no host
domain-name-system
  • 1 respostas
  • 60 Views
Martin Hope
verified_tinker
Asked: 2025-03-10 13:43:22 +0800 CST

Como posso fazer com que pacotes de um namespace de rede ignorem a interface WireGuard?

  • 5

Eu uso o Mullvad VPN na minha máquina host (Fedora 41), que configura uma interface WireGuard, wg0-mullvade quero que o tráfego de e para o namespace blo ignore, com o objetivo final de conectar-me à VPN AnyConnect da minha empresa de dentro ble, depois, fazer RDP no meu computador do escritório, enquanto o resto do meu tráfego de Internet passa pelo Mullvad.

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:11:c0:d6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp1s0
       valid_lft 81301sec preferred_lft 81301sec
    inet6 fec0::e777:52d6:5436:4997/64 scope site dynamic noprefixroute 
       valid_lft 86366sec preferred_lft 14366sec
    inet6 fe80::bc4e:6885:3d23:b51b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: veth-bl-root@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 62:fb:a5:45:d4:e3 brd ff:ff:ff:ff:ff:ff link-netns bl
    inet 192.168.11.2/24 scope global veth-bl-root
       valid_lft forever preferred_lft forever
    inet6 fe80::60fb:a5ff:fe45:d4e3/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
4: vpn0: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1207 qdisc fq_codel state DOWN group default qlen 500
    link/none 
10: wg0-mullvad: <POINTOPOINT,UP,LOWER_UP> mtu 1380 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.136.199.175/32 scope global wg0-mullvad
       valid_lft forever preferred_lft forever

veth-bl-rooté a interface virtual ethernet conectando o namespace raiz ao meu namespace bl. Você pode ignorar vpn0. É a VPN da empresa que mencionei e, por enquanto, só posso usá-la quando o Mullvad estiver desconectado.

Eu segui este tutorial para configurar o namespace e conectá-lo à Internet, o que significa que habilitei o encaminhamento de IP, o encaminhamento de pacotes e o mascaramento de IP. Quando o Mullvad VPN é desconectado, ele funciona, mas quando eu habilito o VPN, as solicitações expiram. Eu acho que é porque o mascaramento de IP não acontece até que os pacotes sejam roteados por enp1s0, e o Mullvad VPN impede isso:

$ ip route get 8.8.8.8 from 192.168.11.2
8.8.8.8 from 192.168.11.2 dev wg0-mullvad table 1836018789 uid 1000 
    cache

Embora na prática wg0-mullvadseja a rota padrão, ela não parece ser definida como tal.

$ ip route
default via 10.0.2.2 dev enp1s0 proto dhcp src 10.0.2.15 metric 100 
10.0.2.0/24 dev enp1s0 proto kernel scope link src 10.0.2.15 metric 100 
10.64.0.1 dev wg0-mullvad proto static 
192.168.11.0/24 dev veth-bl-root proto kernel scope link src 192.168.11.2

$ ip rule list
0:  from all lookup local
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0x6d6f6c65 lookup 1836018789
32766:  from all lookup main
32767:  from all lookup default

$ ip route show table 1836018789
default dev wg0-mullvad proto static

Como ele usa marcação de pacotes e sua própria tabela de roteamento, tentei duas abordagens que usavam cada uma dessas coisas.

Tentativas de correção

Tabela de roteamento separada

Primeiro, tentei criar uma nova tabela de roteamento, onde a única rota era através de enp1s0, e adicionei uma regra especificando que todo o tráfego proveniente do endereço IP do namespace deveria usar essa tabela.

$ ip route show table bl
default via 10.0.2.15 dev enp1s0

$ ip rule
0:  from all lookup local
32763:  from 192.168.11.2/24 lookup bl
32764:  from all lookup main suppress_prefixlength 0
32765:  not from all fwmark 0x6d6f6c65 lookup 1836018789
32766:  from all lookup main
32767:  from all lookup default

Como tinha precedência sobre as regras de Mullvad, eu esperava que funcionasse. De fato, ip route getera promissor:

$ ip route get 8.8.8.8 from 192.168.11.2
8.8.8.8 from 192.168.11.2 dev enp1s0 table bl uid 1000 
    cache

Infelizmente, os pedidos expiraram.

$ sudo ip netns exec bl traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  *^C

$ sudo ip netns exec bl ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2076ms

O uso ping -I 192.168.11.2 8.8.8.8também não teve sucesso:

$ sudo ping -I 192.168.11.2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.11.2 : 56(84) bytes of data.
From 192.168.11.2 icmp_seq=1 Destination Port Unreachable
ping: sendmsg: Operation not permitted
From 192.168.11.2 icmp_seq=2 Destination Port Unreachable
ping: sendmsg: Operation not permitted
From 192.168.11.2 icmp_seq=3 Destination Port Unreachable
ping: sendmsg: Operation not permitted
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2075ms

tcpdump -n -i veth-bl-root icmppegou os pacotes, mas tcpdump -n -i enp1s0 icmpnão encontrou nada. Os pacotes ainda estavam passando wg0-mullvad:

# This is what happened when running `ping -c 3 8.8.8.8`.
$ sudo tcpdump -n -i wg0-mullvad icmp
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wg0-mullvad, link-type RAW (Raw IP), snapshot length 262144 bytes
08:55:53.448220 IP 10.136.199.175 > 10.64.0.1: ICMP echo request, id 13627, seq 601, length 50
08:55:53.532425 IP 10.64.0.1 > 10.136.199.175: ICMP echo reply, id 13627, seq 601, length 50
08:55:59.449654 IP 10.136.199.175 > 10.64.0.1: ICMP echo request, id 13627, seq 602, length 50
08:55:59.534057 IP 10.64.0.1 > 10.136.199.175: ICMP echo reply, id 13627, seq 602, length 50
08:56:05.451552 IP 10.136.199.175 > 10.64.0.1: ICMP echo request, id 13627, seq 603, length 50
08:56:05.535728 IP 10.64.0.1 > 10.136.199.175: ICMP echo reply, id 13627, seq 603, length 50
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel

Aqui está a saída nft list rulesetneste estágio:

table inet firewalld {
    ct helper helper-netbios-ns-udp {
        type "netbios-ns" protocol udp
        l3proto ip
    }

    chain mangle_PREROUTING {
        type filter hook prerouting priority mangle + 10; policy accept;
        jump mangle_PREROUTING_POLICIES
    }

    chain mangle_PREROUTING_POLICIES {
        iifname "enp1s0" jump mangle_PRE_policy_allow-host-ipv6
        iifname "enp1s0" jump mangle_PRE_FedoraWorkstation
        iifname "enp1s0" return
        jump mangle_PRE_policy_allow-host-ipv6
        jump mangle_PRE_FedoraWorkstation
        return
    }

    chain nat_PREROUTING {
        type nat hook prerouting priority dstnat + 10; policy accept;
        jump nat_PREROUTING_POLICIES
    }

    chain nat_PREROUTING_POLICIES {
        iifname "enp1s0" jump nat_PRE_policy_allow-host-ipv6
        iifname "enp1s0" jump nat_PRE_FedoraWorkstation
        iifname "enp1s0" return
        jump nat_PRE_policy_allow-host-ipv6
        jump nat_PRE_FedoraWorkstation
        return
    }

    chain nat_POSTROUTING {
        type nat hook postrouting priority srcnat + 10; policy accept;
        jump nat_POSTROUTING_POLICIES
    }

    chain nat_POSTROUTING_POLICIES {
        iifname "enp1s0" oifname "enp1s0" jump nat_POST_FedoraWorkstation
        iifname "enp1s0" oifname "enp1s0" return
        oifname "enp1s0" jump nat_POST_FedoraWorkstation
        oifname "enp1s0" return
        iifname "enp1s0" jump nat_POST_FedoraWorkstation
        iifname "enp1s0" return
        jump nat_POST_FedoraWorkstation
        return
    }

    chain nat_OUTPUT {
        type nat hook output priority dstnat + 10; policy accept;
        jump nat_OUTPUT_POLICIES
    }

    chain nat_OUTPUT_POLICIES {
        oifname "enp1s0" jump nat_OUT_FedoraWorkstation
        oifname "enp1s0" return
        jump nat_OUT_FedoraWorkstation
        return
    }

    chain filter_PREROUTING {
        type filter hook prerouting priority filter + 10; policy accept;
        icmpv6 type { nd-router-advert, nd-neighbor-solicit } accept
        meta nfproto ipv6 fib saddr . mark . iif oif missing drop
    }

    chain filter_INPUT {
        type filter hook input priority filter + 10; policy accept;
        ct state { established, related } accept
        ct status dnat accept
        iifname "lo" accept
        ct state invalid drop
        jump filter_INPUT_POLICIES
        reject with icmpx admin-prohibited
    }

    chain filter_FORWARD {
        type filter hook forward priority filter + 10; policy accept;
        ct state { established, related } accept
        ct status dnat accept
        iifname "lo" accept
        ct state invalid drop
        ip6 daddr { ::/96, ::ffff:0.0.0.0/96, 2002::/24, 2002:a00::/24, 2002:7f00::/24, 2002:a9fe::/32, 2002:ac10::/28, 2002:c0a8::/32, 2002:e000::/19 } reject with icmpv6 addr-unreachable
        jump filter_FORWARD_POLICIES
        reject with icmpx admin-prohibited
    }

    chain filter_OUTPUT {
        type filter hook output priority filter + 10; policy accept;
        ct state { established, related } accept
        oifname "lo" accept
        ip6 daddr { ::/96, ::ffff:0.0.0.0/96, 2002::/24, 2002:a00::/24, 2002:7f00::/24, 2002:a9fe::/32, 2002:ac10::/28, 2002:c0a8::/32, 2002:e000::/19 } reject with icmpv6 addr-unreachable
        jump filter_OUTPUT_POLICIES
    }

    chain filter_INPUT_POLICIES {
        iifname "enp1s0" jump filter_IN_policy_allow-host-ipv6
        iifname "enp1s0" jump filter_IN_FedoraWorkstation
        iifname "enp1s0" reject with icmpx admin-prohibited
        jump filter_IN_policy_allow-host-ipv6
        jump filter_IN_FedoraWorkstation
        reject with icmpx admin-prohibited
    }

    chain filter_FORWARD_POLICIES {
        iifname "enp1s0" oifname "enp1s0" jump filter_FWD_FedoraWorkstation
        iifname "enp1s0" oifname "enp1s0" reject with icmpx admin-prohibited
        iifname "enp1s0" jump filter_FWD_FedoraWorkstation
        iifname "enp1s0" reject with icmpx admin-prohibited
        oifname "enp1s0" jump filter_FWD_FedoraWorkstation
        oifname "enp1s0" reject with icmpx admin-prohibited
        jump filter_FWD_FedoraWorkstation
        reject with icmpx admin-prohibited
    }

    chain filter_OUTPUT_POLICIES {
        oifname "enp1s0" jump filter_OUT_FedoraWorkstation
        oifname "enp1s0" return
        jump filter_OUT_FedoraWorkstation
        return
    }

    chain filter_IN_FedoraWorkstation {
        jump filter_IN_FedoraWorkstation_pre
        jump filter_IN_FedoraWorkstation_log
        jump filter_IN_FedoraWorkstation_deny
        jump filter_IN_FedoraWorkstation_allow
        jump filter_IN_FedoraWorkstation_post
        meta l4proto { icmp, ipv6-icmp } accept
    }

    chain filter_IN_FedoraWorkstation_pre {
    }

    chain filter_IN_FedoraWorkstation_log {
    }

    chain filter_IN_FedoraWorkstation_deny {
    }

    chain filter_IN_FedoraWorkstation_allow {
        ip6 daddr fe80::/64 udp dport 546 accept
        tcp dport 22 accept
        udp dport 137 ct helper set "helper-netbios-ns-udp"
        udp dport 137 accept
        udp dport 138 accept
        ip daddr 224.0.0.251 udp dport 5353 accept
        ip6 daddr ff02::fb udp dport 5353 accept
        udp dport 1025-65535 accept
        tcp dport 1025-65535 accept
    }

    chain filter_IN_FedoraWorkstation_post {
    }

    chain filter_OUT_FedoraWorkstation {
        jump filter_OUT_FedoraWorkstation_pre
        jump filter_OUT_FedoraWorkstation_log
        jump filter_OUT_FedoraWorkstation_deny
        jump filter_OUT_FedoraWorkstation_allow
        jump filter_OUT_FedoraWorkstation_post
    }

    chain filter_OUT_FedoraWorkstation_pre {
    }

    chain filter_OUT_FedoraWorkstation_log {
    }

    chain filter_OUT_FedoraWorkstation_deny {
    }

    chain filter_OUT_FedoraWorkstation_allow {
    }

    chain filter_OUT_FedoraWorkstation_post {
    }

    chain nat_OUT_FedoraWorkstation {
        jump nat_OUT_FedoraWorkstation_pre
        jump nat_OUT_FedoraWorkstation_log
        jump nat_OUT_FedoraWorkstation_deny
        jump nat_OUT_FedoraWorkstation_allow
        jump nat_OUT_FedoraWorkstation_post
    }

    chain nat_OUT_FedoraWorkstation_pre {
    }

    chain nat_OUT_FedoraWorkstation_log {
    }

    chain nat_OUT_FedoraWorkstation_deny {
    }

    chain nat_OUT_FedoraWorkstation_allow {
    }

    chain nat_OUT_FedoraWorkstation_post {
    }

    chain nat_POST_FedoraWorkstation {
        jump nat_POST_FedoraWorkstation_pre
        jump nat_POST_FedoraWorkstation_log
        jump nat_POST_FedoraWorkstation_deny
        jump nat_POST_FedoraWorkstation_allow
        jump nat_POST_FedoraWorkstation_post
    }

    chain nat_POST_FedoraWorkstation_pre {
    }

    chain nat_POST_FedoraWorkstation_log {
    }

    chain nat_POST_FedoraWorkstation_deny {
    }

    chain nat_POST_FedoraWorkstation_allow {
    }

    chain nat_POST_FedoraWorkstation_post {
    }

    chain filter_FWD_FedoraWorkstation {
        jump filter_FWD_FedoraWorkstation_pre
        jump filter_FWD_FedoraWorkstation_log
        jump filter_FWD_FedoraWorkstation_deny
        jump filter_FWD_FedoraWorkstation_allow
        jump filter_FWD_FedoraWorkstation_post
    }

    chain filter_FWD_FedoraWorkstation_pre {
    }

    chain filter_FWD_FedoraWorkstation_log {
    }

    chain filter_FWD_FedoraWorkstation_deny {
    }

    chain filter_FWD_FedoraWorkstation_allow {
        oifname "enp1s0" accept
    }

    chain filter_FWD_FedoraWorkstation_post {
    }

    chain nat_PRE_FedoraWorkstation {
        jump nat_PRE_FedoraWorkstation_pre
        jump nat_PRE_FedoraWorkstation_log
        jump nat_PRE_FedoraWorkstation_deny
        jump nat_PRE_FedoraWorkstation_allow
        jump nat_PRE_FedoraWorkstation_post
    }

    chain nat_PRE_FedoraWorkstation_pre {
    }

    chain nat_PRE_FedoraWorkstation_log {
    }

    chain nat_PRE_FedoraWorkstation_deny {
    }

    chain nat_PRE_FedoraWorkstation_allow {
    }

    chain nat_PRE_FedoraWorkstation_post {
    }

    chain mangle_PRE_FedoraWorkstation {
        jump mangle_PRE_FedoraWorkstation_pre
        jump mangle_PRE_FedoraWorkstation_log
        jump mangle_PRE_FedoraWorkstation_deny
        jump mangle_PRE_FedoraWorkstation_allow
        jump mangle_PRE_FedoraWorkstation_post
    }

    chain mangle_PRE_FedoraWorkstation_pre {
    }

    chain mangle_PRE_FedoraWorkstation_log {
    }

    chain mangle_PRE_FedoraWorkstation_deny {
    }

    chain mangle_PRE_FedoraWorkstation_allow {
    }

    chain mangle_PRE_FedoraWorkstation_post {
    }

    chain filter_IN_policy_allow-host-ipv6 {
        jump filter_IN_policy_allow-host-ipv6_pre
        jump filter_IN_policy_allow-host-ipv6_log
        jump filter_IN_policy_allow-host-ipv6_deny
        jump filter_IN_policy_allow-host-ipv6_allow
        jump filter_IN_policy_allow-host-ipv6_post
    }

    chain filter_IN_policy_allow-host-ipv6_pre {
    }

    chain filter_IN_policy_allow-host-ipv6_log {
    }

    chain filter_IN_policy_allow-host-ipv6_deny {
    }

    chain filter_IN_policy_allow-host-ipv6_allow {
        icmpv6 type nd-neighbor-advert accept
        icmpv6 type nd-neighbor-solicit accept
        icmpv6 type nd-router-advert accept
        icmpv6 type nd-redirect accept
    }

    chain filter_IN_policy_allow-host-ipv6_post {
    }

    chain nat_PRE_policy_allow-host-ipv6 {
        jump nat_PRE_policy_allow-host-ipv6_pre
        jump nat_PRE_policy_allow-host-ipv6_log
        jump nat_PRE_policy_allow-host-ipv6_deny
        jump nat_PRE_policy_allow-host-ipv6_allow
        jump nat_PRE_policy_allow-host-ipv6_post
    }

    chain nat_PRE_policy_allow-host-ipv6_pre {
    }

    chain nat_PRE_policy_allow-host-ipv6_log {
    }

    chain nat_PRE_policy_allow-host-ipv6_deny {
    }

    chain nat_PRE_policy_allow-host-ipv6_allow {
    }

    chain nat_PRE_policy_allow-host-ipv6_post {
    }

    chain mangle_PRE_policy_allow-host-ipv6 {
        jump mangle_PRE_policy_allow-host-ipv6_pre
        jump mangle_PRE_policy_allow-host-ipv6_log
        jump mangle_PRE_policy_allow-host-ipv6_deny
        jump mangle_PRE_policy_allow-host-ipv6_allow
        jump mangle_PRE_policy_allow-host-ipv6_post
    }

    chain mangle_PRE_policy_allow-host-ipv6_pre {
    }

    chain mangle_PRE_policy_allow-host-ipv6_log {
    }

    chain mangle_PRE_policy_allow-host-ipv6_deny {
    }

    chain mangle_PRE_policy_allow-host-ipv6_allow {
    }

    chain mangle_PRE_policy_allow-host-ipv6_post {
    }
}
table ip filter {
    chain FORWARD {
        type filter hook forward priority filter; policy accept;
        iifname "veth-bl-root" oifname "enp1s0" counter packets 3 bytes 252 accept
        iifname "enp1s0" oifname "veth-bl-root" counter packets 3 bytes 252 accept
    }
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
    chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 192.168.11.0/24 oifname "enp1s0" counter packets 1 bytes 84 masquerade
    }
}
table inet mullvad {
    chain prerouting {
        type filter hook prerouting priority -199; policy accept;
        iif != "wg0-mullvad" ct mark 0x00000f41 meta mark set 0x6d6f6c65
        ip saddr 193.138.218.220 udp sport 16734 meta mark set 0x6d6f6c65
    }

    chain output {
        type filter hook output priority filter; policy drop;
        oif "lo" accept
        ct mark 0x00000f41 accept
        udp sport 68 ip daddr 255.255.255.255 udp dport 67 accept
        ip6 saddr fe80::/10 udp sport 546 ip6 daddr ff02::1:2 udp dport 547 accept
        ip6 saddr fe80::/10 udp sport 546 ip6 daddr ff05::1:3 udp dport 547 accept
        ip6 daddr ff02::2 icmpv6 type nd-router-solicit icmpv6 code no-route accept
        ip6 daddr ff02::1:ff00:0/104 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        ip6 daddr fe80::/10 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        ip6 daddr fe80::/10 icmpv6 type nd-neighbor-advert icmpv6 code no-route accept
        ip daddr 193.138.218.220 udp dport 16734 meta mark 0x6d6f6c65 accept
        oif "wg0-mullvad" udp dport 53 ip daddr 10.64.0.1 accept
        oif "wg0-mullvad" tcp dport 53 ip daddr 10.64.0.1 accept
        udp dport 53 reject
        tcp dport 53 reject with tcp reset
        oif "wg0-mullvad" accept
        reject
    }

    chain input {
        type filter hook input priority filter; policy drop;
        iif "lo" accept
        ct mark 0x00000f41 accept
        udp sport 67 udp dport 68 accept
        ip6 saddr fe80::/10 udp sport 547 ip6 daddr fe80::/10 udp dport 546 accept
        ip6 saddr fe80::/10 icmpv6 type nd-router-advert icmpv6 code no-route accept
        ip6 saddr fe80::/10 icmpv6 type nd-redirect icmpv6 code no-route accept
        ip6 saddr fe80::/10 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        icmpv6 type nd-neighbor-advert icmpv6 code no-route accept
        ip saddr 193.138.218.220 udp sport 16734 ct state established accept
        iif "wg0-mullvad" accept
    }

    chain forward {
        type filter hook forward priority filter; policy drop;
        ct mark 0x00000f41 accept
        udp sport 68 ip daddr 255.255.255.255 udp dport 67 accept
        udp sport 67 udp dport 68 accept
        ip6 saddr fe80::/10 udp sport 546 ip6 daddr ff02::1:2 udp dport 547 accept
        ip6 saddr fe80::/10 udp sport 546 ip6 daddr ff05::1:3 udp dport 547 accept
        ip6 saddr fe80::/10 udp sport 547 ip6 daddr fe80::/10 udp dport 546 accept
        ip6 daddr ff02::2 icmpv6 type nd-router-solicit icmpv6 code no-route accept
        ip6 saddr fe80::/10 icmpv6 type nd-router-advert icmpv6 code no-route accept
        ip6 saddr fe80::/10 icmpv6 type nd-redirect icmpv6 code no-route accept
        ip6 daddr ff02::1:ff00:0/104 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        ip6 daddr fe80::/10 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        ip6 saddr fe80::/10 icmpv6 type nd-neighbor-solicit icmpv6 code no-route accept
        ip6 daddr fe80::/10 icmpv6 type nd-neighbor-advert icmpv6 code no-route accept
        icmpv6 type nd-neighbor-advert icmpv6 code no-route accept
        oif "wg0-mullvad" udp dport 53 ip daddr 10.64.0.1 accept
        oif "wg0-mullvad" tcp dport 53 ip daddr 10.64.0.1 accept
        udp dport 53 reject
        tcp dport 53 reject with tcp reset
        oif "wg0-mullvad" accept
        iif "wg0-mullvad" ct state established accept
        reject
    }

    chain mangle {
        type route hook output priority mangle; policy accept;
        oif "wg0-mullvad" udp dport 53 ip daddr 10.64.0.1 accept
        oif "wg0-mullvad" tcp dport 53 ip daddr 10.64.0.1 accept
        meta cgroup 5087041 ct mark set 0x00000f41 meta mark set 0x6d6f6c65
    }

    chain nat {
        type nat hook postrouting priority srcnat; policy accept;
        oif "wg0-mullvad" ct mark 0x00000f41 drop
        oif != "lo" ct mark 0x00000f41 masquerade
    }
}

Marcar pacotes debl

Como Mullvad parece ignorar pacotes marcados com 0x6d6f6c65, tentei adicionar uma regra que carimbasse essa marca em pacotes vindos de bl.

$ sudo nft add rule inet mullvad prerouting ip saddr 192.168.11.2 meta mark set 0x6d6f6c65
$ sudo nft list ruleset | grep mullvad
table inet mullvad {
    chain prerouting {
        type filter hook prerouting priority -199; policy accept;
        iif != "wg0-mullvad" ct mark 0x00000f41 meta mark set 0x6d6f6c65
        ip saddr 170.62.100.66 udp sport 10501 meta mark set 0x6d6f6c65
        ip saddr 192.168.11.2 meta mark set 0x6d6f6c65
    }
    ...
}

Mas isso não fez nada.

$ ip route get 8.8.8.8 from 192.168.11.2
8.8.8.8 from 192.168.11.2 dev wg0-mullvad table 1836018789 uid 1000 
    cache 

$ sudo ip netns exec bl traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  *^C

Cometi algum erro ou toda a minha abordagem é falha?

linux
  • 1 respostas
  • 68 Views
Martin Hope
Marco Ferrara
Asked: 2025-03-07 22:19:39 +0800 CST

openstack - não é possível gerenciar servidores a partir da interface gráfica do controlador

  • 5

Não sou muito especialista em openstack. Tenho dois problemas no meu ambiente openstack com dois controladores.

  1. Quando verifico o estado, mais hosts estão inativos (mas eles estão ativos e em execução, e a VM está em execução neles):
$ openstack compute service list --service nova-compute
+--------------------------------------+--------------+------------+-----------+----------+-------+----------------------------+
| ID                                   | Binary       | Host       | Zone      | Status   | State | Updated At                 |
+--------------------------------------+--------------+------------+-----------+----------+-------+----------------------------+
| 1b85d869-8cf3-42e9-86eb-************ | nova-compute | compute01  | nova      | enabled  | down  | 2025-03-03T12:20:14.000000 |
| f784d63b-cfb7-4425-af85-************ | nova-compute | compute02  | nova      | enabled  | down  | 2025-03-03T12:20:54.000000 |
| 3d051f6f-84cb-4e4b-9e64-************ | nova-compute | compute03  | nova      | enabled  | down  | 2023-05-07T04:03:10.000000 |
| 0e3b5f5a-591b-4a63-b21a-************ | nova-compute | compute04  | nova      | enabled  | down  | 2025-03-04T10:37:46.000000 |
| e10a28e8-f359-4a00-a5db-************ | nova-compute | compute05  | nova      | enabled  | down  | 2025-02-28T14:25:03.000000 |
| 67386517-0485-43ee-83b3-************ | nova-compute | compute08  | nova      | enabled  | up    | 2025-03-07T14:06:24.000000 |
| 2b19451c-e9af-4b23-aeff-************ | nova-compute | compute09  | nova      | disabled | down  | 2021-11-19T03:55:34.000000 |
| 0a0ba906-e96d-4ac3-9a65-************ | nova-compute | compute06  | nova      | enabled  | down  | 2025-02-28T12:14:33.000000 |
| 07a27e91-f8ce-4a58-8c0a-************ | nova-compute | compute10  | nova      | enabled  | down  | 2025-03-03T10:51:21.000000 |
| 3cc2b99c-f68f-4565-a422-************ | nova-compute | compute07  | nova      | enabled  | up    | 2025-03-07T14:06:15.000000 |
| 861011c4-09e5-4812-b26f-************ | nova-compute | compute11  | nova      | enabled  | up    | 2025-03-07T14:06:17.000000 |
| 75c32a27-8dfc-4236-b7d9-************ | nova-compute | compute12  | nova      | enabled  | up    | 2025-03-07T14:06:21.000000 |
| 0e37eaad-3285-4e56-a1d6-************ | nova-compute | compute25  | rack1     | enabled  | up    | 2025-03-07T14:06:20.000000 |
| 6fcfb08f-3f38-4d82-9bb8-************ | nova-compute | compute26  | rack1     | enabled  | up    | 2025-03-07T14:06:23.000000 |
| 8d680d2a-3c1f-443a-a43f-************ | nova-compute | compute29  | rack1     | disabled | down  | 2021-11-16T13:45:56.000000 |
| 6b95b193-e66e-47f3-9e28-************ | nova-compute | compute30  | rack1     | enabled  | up    | 2025-03-07T14:06:16.000000 |
| 2f921cc2-2e54-4263-b1e6-************ | nova-compute | compute31  | rack1     | enabled  | up    | 2025-03-07T14:06:20.000000 |
| e38b9ba2-01a0-46f8-a314-************ | nova-compute | compute32  | rack1     | enabled  | up    | 2025-03-07T14:06:17.000000 |
| 1c3162cb-3c56-4678-89d2-************ | nova-compute | compute33  | rack1     | enabled  | up    | 2025-03-07T14:06:15.000000 |
| 31e351fa-0012-4ca1-95ed-************ | nova-compute | compute24  | rack1     | enabled  | up    | 2025-03-07T14:06:16.000000 |
| 32e0b6ca-0c57-4d18-863c-************ | nova-compute | compute27  | rack1     | enabled  | up    | 2025-03-07T14:06:17.000000 |
| 887fc96c-8bc8-4f05-bada-************ | nova-compute | compute13  | AZ1       | enabled  | up    | 2025-03-07T14:06:15.000000 |
| 648a6a1d-2f09-4b5a-ac99-************ | nova-compute | compute14  | AZ1       | enabled  | up    | 2025-03-07T14:06:22.000000 |
| 3da7c060-0f65-4e2e-9ef0-************ | nova-compute | compute16  | AZ1       | enabled  | up    | 2025-03-07T14:06:17.000000 |
| a15b9200-0b80-477c-b98e-************ | nova-compute | compute17  | AZ1       | enabled  | up    | 2025-03-07T14:06:23.000000 |
| ef2066f6-6523-4781-86a3-************ | nova-compute | compute18  | AZ1       | enabled  | up    | 2025-03-07T14:06:23.000000 |
| cb38112a-9234-48da-9115-************ | nova-compute | compute19  | AZ1       | enabled  | up    | 2025-03-07T14:06:22.000000 |
| a13e86d5-114a-4145-a4d5-************ | nova-compute | compute20  | AZ1       | enabled  | up    | 2025-03-07T14:06:19.000000 |
| 91001b0f-7ce4-43d8-98fc-************ | nova-compute | compute21  | AZ1       | enabled  | up    | 2025-03-07T14:06:19.000000 |
| d62cecbb-d556-456d-b363-************ | nova-compute | compute22  | AZ1       | enabled  | up    | 2025-03-07T14:06:16.000000 |
| a5efa587-5a69-4d3b-b3b3-************ | nova-compute | compute23  | AZ1       | enabled  | up    | 2025-03-07T14:06:22.000000 |
| a820cfff-ffca-4b33-8921-************ | nova-compute | compute34  | AZ1       | enabled  | up    | 2025-03-07T14:06:15.000000 |
| 3c86c385-97c0-40e0-a139-************ | nova-compute | compute36b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:13.000000 |
| ca3f1243-d84d-4871-a476-************ | nova-compute | compute37b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:17.000000 |
| 5fd36263-d095-4d1c-b92d-************ | nova-compute | compute35b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:22.000000 |
| d2ae6fcb-abc0-4500-9e64-************ | nova-compute | compute39b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:19.000000 |
| 9797d22f-9d11-44b5-adb6-************ | nova-compute | compute40b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:18.000000 |
| b1809339-bfd3-4b84-99b8-************ | nova-compute | compute38b | AZ-PP     | enabled  | up    | 2025-03-07T14:06:15.000000 |
+--------------------------------------+--------------+------------+-----------+----------+-------+----------------------------+

isso porque não consigo implantar uma nova VM porque recebo o erro:

Error: Failed to perform requested operation on instance "  test.ts1.mydomain.com", the instance has an error status: Please try again later [Error: No valid host was found. There are not enough hosts available.]. 
  1. Posso gerenciar a VM pela GUI, se eu tentar reconstruir um servidor, ele ainda estará pendente

insira a descrição da imagem aqui

Do controlador vejo estes erros:

2025-03-07 14:16:51.448 3868 ERROR oslo.messaging._drivers.impl_rabbit [req-98ac1001-ba76-4cb6-bfca-be2efa0a3b9e 045df8a7fcf241e78f527994d5a77a9b 3c14771e53de4a2f80e138bd5df3bf5e - default default] [f1269656-782a-4418-8d59-d29d526a075d] AMQP server on controller.iaas.isp.dev:5672 is unreachable: Server unexpectedly closed connection. Trying again in 1 seconds.: OSError: Server unexpectedly closed connection
2025-03-07 14:16:52.471 3868 INFO oslo.messaging._drivers.impl_rabbit [req-98ac1001-ba76-4cb6-bfca-be2efa0a3b9e 045df8a7fcf241e78f527994d5a77a9b 3c14771e53de4a2f80e138bd5df3bf5e - default default] [f1269656-782a-4418-8d59-d29d526a075d] Reconnected to AMQP server on controller.iaas.isp.dev:5672 via [amqp] client with port 39944.

Tentei reiniciar rabbitmq-server.servicee reinicializar os controles, mas não consegui resolver o problema.

Funcionou até alguns dias atrás. Alguém tem ideia de como consertar isso?

openstack
  • 1 respostas
  • 150 Views
Martin Hope
frittenknecht
Asked: 2025-03-07 02:43:33 +0800 CST

Por que minha configuração IPv6 consegue alcançar alguns hosts, mas não todos?

  • 6

Estou tentando configurar o IPv6 para uma das minhas máquinas Linux, mas há coisas acontecendo que ainda não entendo. Há uma coisa complicada: a máquina deve ter uma configuração de endereço estático, mas também deve fazer SLAAC. A máquina precisa operar em dois ambientes diferentes: no primeiro ambiente, há um roteador que suporta SLAAC, mas o gateway estático não está lá. No segundo ambiente, o SLAAC não funcionará de forma alguma, mas o gateway estático está lá. Talvez isso pareça um pouco assustador (parece?), mas uma configuração muito semelhante funcionou bem para IPv4 apenas até agora. Eu realmente quero continuar com isso; minha pergunta não é tanto sobre abordagens alternativas muito diferentes.

No primeiro ambiente, só consigo acessar alguns hosts IPv6 (ainda não sei como se comportaria no segundo ambiente).

Eu uso systemd-networkd para rede, e esta é minha configuração de interface de rede (com alguns valores anonimizados):

[Corresponder]
Nome=e*

[Rede]
Endereço=2a00:.../64
DNS=...
# IPv4 funciona bem, mas para torná-lo mais completo:
Endereço=185.1.2.3/29
Endereço=185.1.2.4/29
DHCP=ipv4

[Rota]
Portão=2a00:...:1
Métrica=2000

[Rota]
Porta de entrada=185.1.2.5
Métrica=2000

Esta é a saída ip addrpara essa interface (no primeiro ambiente), novamente anonimizada:

2: enp5s0: mtu 1500 qdisc fq_codel estado UP grupo padrão qlen 1000
    link/éter aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
    nome alternativo enxfoo
    inet 185.1.2.3/29 brd 185.1.2.5 escopo global enp5s0
       valid_lft para sempre preferred_lft para sempre
    inet 192.168.50.209/24 métrica 1024 brd 192.168.50.255 escopo global dinâmico enp5s0
       valid_lft 83782seg preferred_lft 83782seg
    inet 185.1.2.4/29 brd 185.1.2.5 escopo global secundário enp5s0
       valid_lft para sempre preferred_lft para sempre
    inet6 2001:.../64 escopo global dinâmico mngtmpaddr noprefixroute
       valid_lft 594seg preferred_lft 594seg
    inet6 2a00:.../64 escopo global
       valid_lft para sempre preferred_lft para sempre
    inet6 fe80:.../64 escopo link proto kernel_ll
       valid_lft para sempre preferred_lft para sempre

A tabela de roteamento se parece com isso:

2001:.../64 dev enp5s0 proto ra métrica 1024 expira 595seg pref médio
2a00:.../64 dev enp5s0 proto kernel métrica 256 pref médio
fe80::/64 dev enp5s0 proto kernel métrica 256 pref médio
padrão nhid 2343432122 via fe80:... dev enp5s0 proto ra métrica 1024 expira 595seg pref médio
padrão via 2a00:...:1 dev enp5s0 proto estático métrica 2000 pref médio
$ ip nexthop mostrar
id 2343432122 via fe80:... dev enp5s0 escopo link proto ra

Até aqui tudo bem. Tenho um entendimento básico sobre tudo isso, mas não sou um especialista. Para mim, parece que temos a configuração estática lá, mas o SLAAC também funcionou, e a rota dinâmica tem uma métrica melhor, então foi bom o suficiente para eu tentar. No entanto, só consigo alcançar alguns hosts. Este funciona:

$ ping6 2604:1380:4641:c500::1
PING 2604:1380:4641:c500::1 (2604:1380:4641:c500::1) 56 bytes de dados
64 bytes de 2604:1380:4641:c500::1: icmp_seq=1 ttl=54 tempo=126 ms
64 bytes de 2604:1380:4641:c500::1: icmp_seq=2 ttl=54 tempo=127 ms

E este não:

$ ping6 2a00:1450:4001:830::2003
PING 2a00:1450:4001:830::2003 (2a00:1450:4001:830::2003) 56 bytes de dados

Tentei mais um pouco, e parece que depende do início do endereço de destino. Então, verifiquei quais são as decisões de roteamento para esses dois casos:

$ ip -6 rota obter 2604:1380:4641:c500::1
2604:1380:4641:c500::1 de :: via fe80::... dev enp5s0 proto ra src 2001:... métrica 1024 pref médio

$ ip -6 rota obter 2a00:1450:4001:830::2003
2a00:1450:4001:830::2003 de :: via fe80::... dev enp5s0 proto ra src 2a00:... métrica 1024 pref médio

Então, para o caso de trabalho, ele decidiu usar o endereço que obteve via SLAAC como o endereço de origem. Ótimo. Para o caso de não trabalho, ele decidiu usar o endereço estático. Isso não pode funcionar. Os pacotes nunca encontrarão o caminho de volta. Mas por que ele faz isso? Vejo que meu endereço estático começa com "2a00", assim como o endereço de destino. Mas é esse o motivo? Como exatamente são as regras lá? Eu realmente não entendo isso ainda e também não consegui encontrar respostas valiosas na web ainda. Existe uma maneira simples de consertar isso?

linux
  • 1 respostas
  • 66 Views
Martin Hope
Ben Holness
Asked: 2025-03-06 10:53:15 +0800 CST

Como posso saber o que o LocationMatch está verificando no apache2?

  • 5

Estou usando uma diretiva LocationMatch para determinar se devo ou não definir cabeçalhos CORS, mas estou tendo problemas para fazê-la funcionar corretamente.

Por exemplo, se o URI for /folder1/f/folder2/document1, então <LocationMatch "^/folder1/f">funciona, mas <LocationMatch "^/folder1/f/">não, no entanto <LocationMatch "^/folder1/f.">funciona. Idealmente, eu terminaria com <LocationMatch "^/folder1/f/folder2">, mas isso também não funciona.

Não consigo descobrir por que ^/folder1/f/não funciona. O ideal é ver em um log em algum lugar o que está sendo comparado, caso haja algo acontecendo que eu não saiba.

Existe alguma maneira de ter essa saída em um log em algum lugar?

apache-2.4
  • 1 respostas
  • 45 Views
Martin Hope
calqium
Asked: 2025-03-06 01:17:28 +0800 CST

O script para atualizar aplicativos pelo WinGet não está sendo executado pelo GPO

  • 5

Escrevi o seguinte script no PowerShell para atualizar aplicativos por meio do WinGet e forçar a desinstalação e reinstalação caso a atualização falhe:

<#
.SYNOPSIS
    Installs the Powershell WinGet client module.
.DESCRIPTION
    Checks to see if the Powershell WinGet client module is installed. If not, attempts to install it.
    If the install fails, exits the program.
.NOTES
    The module can be found here: https://www.powershellgallery.com/packages/Microsoft.WinGet.Client/1.10.320.
#>
function Install-WinGetClientModule {
    # Check if official Powershell WinGet client is installed.
    if (Get-Module -ListAvailable -Name Microsoft.WinGet.Client) {
        Write-Host "Powershell Module for the Windows Package Manager Client is installed."
    } else {
        # Install NuGet package provider, which is a requirement to install the module.
        Write-Host "Installing NuGet..."
        Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

        # Check if the NuGet installed successfully.
        if ($?) {
            Write-Host "Successfully installed." -ForegroundColor Green
        } else {
            # If install could not be completed, exit script.
            Write-Host "Could not install NuGet." -ForegroundColor Red
            exit
        }

        # Set PSGallery as a trusted repository to install from.
        Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted

        # Install the module.
        Write-Host "Installing the Powershell Module for the Windows Package Manager Client..."
        Install-Module -Name Microsoft.WinGet.Client

        # Check if the module installed successfully.
        if ($?) {
            Write-Host "Successfully installed." -ForegroundColor Green
        } else {
            # If install could not be completed, exit script.
            Write-Host "Could not install the Powershell Module for the Windows Package Manager Client." -ForegroundColor Red
            exit
        }
    }
}


<#
.SYNOPSIS
    Get WinGet applications that require updates.
#>
function Get-ApplicationsWithUpdates {
    # Store the applications with updates available through WinGet
    $applicationsWithUpdates = Get-WinGetPackage | Where-Object IsUpdateAvailable

    return $applicationsWithUpdates
}

<#
.SYNOPSIS
    Update applications though WinGet.
#>
function Update-Applications {
    param (
        [Parameter(Mandatory = $true)]
        [Array]$applicationsToUpdate
    )
    
    # Update each application provided.
    foreach ($app in $applicationsToUpdate) {
        $appName = $app.Name
        $appId = $app.Id
        Write-Host "Updating $appName..."
        
        # Update the application
        winget upgrade --id $appId --accept-package-agreements --accept-source-agreements
        
        # Check if the application was successfully updated.
        if ($?) {
            Write-Host "$appName updated to the latest version." -ForegroundColor Green
        } else {
            # If the update failed, attempt to reinstall.
            Write-Host "Failed to update $appName. Attempting to reinstall..."
            winget uninstall --id $appId --silent --accept-source-agreements
            winget install --id $appId --accept-package-agreements --accept-source-agreements

            # Check if the application reinstalled successfully.
            if ($?) {
                Write-Host "$appName updated to the latest version." -ForegroundColor Green
            } else {
                Write-Host "Failed to update $appName." -ForegroundColor Red
            }
        }
    }
}


function Main {
    # Get Powershell WinGet client.
    Install-WinGetClientModule

    # Check for application updates through WinGet.
    $applicationsToUpdate = Get-ApplicationsWithUpdates
    Write-Host $applicationsToUpdate

    # Check that the number of applications to update isn't 0.
    if ($applicationsToUpdate.Count -gt 0) {
        # Update applications.
        Update-Applications -ApplicationsToUpdate $applicationsToUpdate
    } else {
        Write-Host "All applications are up to date."
    } 
}


# Run the script.
Main

Quando eu o executo manualmente pelo terminal, ele funciona como esperado. No entanto, ele não funciona como um script de inicialização de Política de Grupo em Computer Configuration\Policies\Windows Settings\Scripts(Startup/Shutdown).

Ativei a Execução de Script Computer Configuration\Policies\Administrative Templates\Windows Components\Windows Powershelldefinindo a Política de Execução como "Permitir todos os scripts" (isso é apenas para teste e não é implantado para todos os usuários).

Tenho testado para ver se o script funciona instalando versões mais antigas de programas via WinGet, forçando gpupdate, reiniciando o computador e esperando mais de 5 minutos para permitir que o script seja executado de forma assíncrona. Até agora, não tive sorte em fazer o script ser executado.

Há algo que esteja faltando para que este script funcione na inicialização?

windows
  • 1 respostas
  • 75 Views
Martin Hope
phantom-99w
Asked: 2025-03-05 16:07:43 +0800 CST

Como faço para atualizar o PowerShell para ficar atrás de um firewall corporativo?

  • 6

Estou tentando atualizar o PowerShellGet da versão 1.0.0.1 para uma versão mais recente no Windows Server 2019. Não sou especialista em NuGet, mas tenho um conhecimento básico de provedores e fontes de pacotes. Tenho seguido este e este guia no site Microsoft Learn, além de outros. Estou protegido por um firewall corporativo e não consigo acessar a internet em geral. Temos uma instância do Nexus com os seguintes repositórios configurados:

  • Proxy NuGet chamado psgallery-proxy de https://www.powershellgallery.com/api/v2/
  • Proxy NuGet chamado nugetorg-proxy de https://www.nuget.org/api/v2/

Primeiro, copiei a versão 2.8.5.208 do provedor NuGet de outro computador para o $env:ProgramFiles\PackageManagement\ProviderAssemblies\NuGet\2.8.5.208. Depois, executei os seguintes passos no PowerShell:

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208
$cred = Get-Credential
Register-PackageSource -Name NexusNugetOrg -ProviderName Nuget -Location https://example.com/repository/nugetorg-proxy/ -Trusted -Credential $cred
Register-PSRepository -Name NexusPSGallery -SourceLocation https://example.com/repository/psgallery-proxy/ -InstallationPolicy Trusted -Credential $cred

Depois de executar esses comandos, recebo o seguinte, que me parece estar correto:

PS C:\Windows\system32> Get-PackageProvider -ListAvailable

Name                     Version          DynamicOptions
----                     -------          --------------
msi                      3.0.0.0          AdditionalArguments
msu                      3.0.0.0
NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrereleaseVersions, ConfigFile, SkipValidate
PowerShellGet            1.0.0.1          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPathUpdate, Filter, Tag, Includes, DscResource, RoleCapability, Command, PublishLocation, ScriptSourceLocation, ScriptPublishLocation
Programs                 3.0.0.0          IncludeWindowsInstaller, IncludeSystemComponent
 

PS C:\Windows\system32> Get-PackageSource

Name                             ProviderName     IsTrusted  Location
----                             ------------     ---------  --------
NexusNugetOrg                    NuGet            True       https://example.com/repository/nugetorg-proxy/
NexusPSGallery                   PowerShellGet    True       https://example.com/repository/psgallery-proxy/

PS C:\Windows\system32> (Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 394802
True

Consigo instalar pacotes normais. Se eu executar o seguinte comando, a instalação do módulo será bem-sucedida e posso ver que ele dbatoolsaparece no Nexus:

Install-Module -Name dbatools -Force -Credential $cred -Repository NexusPSGallery

No entanto, não consigo atualizar o PowerShellGet. Recebo a seguinte saída:

PS C:\Windows\system32> Install-Module -Name PowerShellGet -Force -AllowClobber -Credential $cred -Repository NexusNugetOrg
PackageManagement\Get-PackageSource : Unable to find repository 'NexusNugetOrg'. Use Get-PSRepository to see all available repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4489 char:35
+ ... ckageSources = PackageManagement\Get-PackageSource @PSBoundParameters
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...etPackageSource:GetPackageSource) [Get-PackageSource], Exception
    + FullyQualifiedErrorId : SourceNotFound,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPackageSource
 
PS C:\Windows\system32> Install-Module -Name PowerShellGet -Force -AllowClobber -Credential $cred -Repository NexusPSGallery
PackageManagement\Install-Package : No match was found for the specified search criteria and module name 'PowerShellGet'. Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 char:21
+ ...          $null = PackageManagement\Install-Package @PSBoundParameters
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

O que estou perdendo para conseguir executar com sucesso o Install-Module PowerShellGet?

windows
  • 1 respostas
  • 78 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve