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
Thystra
Asked: 2024-10-07 14:24:58 +0800 CST

Acessando a internet do Strongswan / IKE2 VPN com nftables

  • 5

Tenho um servidor Ubuntu 24.04.1 LTS executando o Strongswan.

Desde então, descobri que ele está usando o nftables e não o iptables como firewall.

Ao configurar a VPN, consigo me conectar ao cliente, mas não consigo acessar hosts na Internet por endereço IP ou resolver nomes.

Acho que estou esquecendo algumas regras de encaminhamento, mas não tenho certeza de como traduzi-las/aplicá-las em um formato NFT.

Que regra(s) preciso aplicar para que o IPV4 e o IPV6 funcionem para os clientes?

A configuração abaixo começou com um guia wireguard e eu o modifiquei para incluir outros serviços que tenho na máquina. Encontrei algumas referências do openwrt e strongswan e tentei traduzir isso, mas acho que ainda não atingi o objetivo. Agradeço qualquer conselho.

Obrigado.

Adicionei-os numa tentativa de passar o tráfego ipsec

pré-roteamento de cadeia

 meta ipsec exists ip saddr $IKE_NETS counter accept

cadeia inbound_world


    meta l4proto ah accept
    meta l4proto esp accept

/etc/nftables.conf

#!/usr/sbin/nft -f

flush ruleset

define DEV_WG = wg0
define DEV_OVPN = tun0
define DEV_VPN = { $DEV_WG, $DEV_OVPN }
define DEV_WORLD = eth0
define IP_OVPN = 10.8.0.0/24
define IP_WORLD_V4 = public_v4_ip
define IP_WORLD_V6 = public_v6_ip
define PORT_IKE = { 500, 4500 }
define PORT_WG = 51820
define PORT_OVPN = 1194
define PORT_VPN = { $PORT_IKE, $PORT_WG, $PORT_OVPN  }
define DEV_LOCAL_NETS = { $DEV_VPN }
define DEV_OUT_NETS = { $DEV_WORLD }
#define IKE_NETS = { 172.16.252.0/24, fd5a:4c1f:8d73:f583::/64 } <- did not like the Ipv6 address
define IKE_NETS = { 172.16.252.0/24 }


# `inet` applies to both IPv4 and IPv6.
table inet global {
    map port_forwards_tcp_ipv4 {
        type ipv4_addr . inet_service : ipv4_addr . inet_service
        # lets forward port for our torrent. Our 12345 to 12345 on 172.16.0.2
        elements = { $IP_WORLD_V4 . 12345 : 172.16.0.2 . 12345 }
    }

    map port_forwards_tcp_ipv6 {
        type ipv6_addr . inet_service : ipv6_addr . inet_service
        # lets forward port for our torrent. Our 12345 to 12345 on fdf5:6028:947d:1234::2
        elements = { $IP_WORLD_V6 . 12345 : [fdf5:6028:947d:1234::2] . 12345}
    }

    map port_forwards_udp_ipv4 {
        type ipv4_addr . inet_service : ipv4_addr . inet_service
        # lets forward port for our torrent. Our 12345 to 12345 on 172.16.0.2
        elements = { $IP_WORLD_V4 . 12345 : 172.16.0.2 . 12345 }
    }

    map port_forwards_udp_ipv6 {
        type ipv6_addr . inet_service : ipv6_addr . inet_service
        # lets forward port for our torrent. Our 12345 to 12345 on fdf5:6028:947d:1234::2
        elements = { $IP_WORLD_V6 . 12345 : [fdf5:6028:947d:1234::2] . 12345}
    }

    chain inbound_world {
        # accepting ping (icmp-echo-request) for diagnostic purposes.
        # However, it also lets probes discover this host is alive.
        # This sample accepts them within a certain rate limit:
        #
        # icmp type echo-request limit rate 5/second accept

        # Allow IPv6 configuration packets
        icmpv6 type {nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit, 
             nd-router-advert,mld-listener-query,destination-unreachable,
             packet-too-big,time-exceeded,parameter-problem} accept

        # allow SSH
        tcp dport { 22 } accept

        # http, https
        tcp dport 80 accept
        tcp dport 443 accept

        # smtp, submission, smtps
        tcp dport 25 accept
        tcp dport 587 accept
        tcp dport 465 accept

        # pop3, pop3s
        tcp dport 110 accept
        tcp dport 995 accept

        # imap, imaps
        tcp dport 143 accept
        tcp dport 993 accept

       # allow VPN connection
    udp dport { $PORT_VPN } accept

    meta l4proto ah accept
    meta l4proto esp accept
    }

    chain inbound_vpn {
        # accepting ping (icmp-echo-request) for diagnostic purposes.
        icmp type echo-request limit rate 5/second accept

        # Allow IPv6 configuration packets
        icmpv6 type {nd-neighbor-solicit,nd-neighbor-advert,nd-router-solicit,
             nd-router-advert,mld-listener-query,destination-unreachable,
             packet-too-big,time-exceeded,parameter-problem} accept

        # allow DNS and SSH from the private network
        tcp dport { 22, 53 } accept
        udp dport { 53 } accept
    }

    chain inbound {
        # drop all traffic by default
        type filter hook input priority filter; policy drop;

        # Allow traffic from established and related packets, drop invalid
        ct state vmap { established : accept, related : accept, invalid : drop }
        # Allow dnat (port forwarding)
        ct status dnat accept

        # allow loopback traffic, anything else jump to chain for further evaluation
        iifname vmap { lo : accept, $DEV_WORLD : jump inbound_world, $DEV_VPN : jump inbound_vpn}

        # the rest is dropped by the above policy
    }

    chain forward {
        type filter hook forward priority filter; policy drop;

        # Allow traffic from established and related packets, drop invalid
        ct state vmap { established : accept, related : accept, invalid : drop }
        # Allow port forwarding
        ct status dnat accept

        # connections from the internal nets to the out nets are allowed
        iifname $DEV_LOCAL_NETS oifname $DEV_OUT_NETS accept
        # the rest is dropped by the above policy
        meta ipsec exists ip saddr $IKE_NETS counter accept


    }

    chain prerouting {
       type nat hook prerouting priority dstnat; policy accept;
       dnat ip addr . port to ip daddr . tcp dport map @port_forwards_tcp_ipv4
       dnat ip6 addr . port to ip6 daddr . tcp dport map @port_forwards_tcp_ipv6
       dnat ip addr . port to ip daddr . udp dport map @port_forwards_udp_ipv4
       dnat ip6 addr . port to ip6 daddr . udp dport map @port_forwards_udp_ipv6
       meta ipsec exists ip saddr $IKE_NETS counter accept
    }

    chain postrouting {
        type nat hook postrouting priority srcnat; policy accept;
        # Hide IPs from local nets to the internet.
        # We are using SNAT because we have static IP and it wil work faster than MASQUERADE
        iifname $DEV_LOCAL_NETS oifname $DEV_WORLD snat ip to $IP_WORLD_V4
        iifname $DEV_LOCAL_NETS oifname $DEV_WORLD snat ip6 to $IP_WORLD_V6
    }
}

Piscinas Strongswan:

pools {
    primary-pool-ipv4 {
        addrs = 172.16.252.0/24
        dns = 172.16.252.1, 8.8.8.8, 9.9.9.9
        split_exclude = 172.16.0.0/12
    }
    primary-pool-ipv6 {
        addrs = fd5a:4c1f:8d73:f583::/64
    dns = 2620:fe::fe, 2620:fe::9

    }
ubuntu
  • 1 respostas
  • 24 Views
Martin Hope
Setyawan
Asked: 2024-10-07 09:04:23 +0800 CST

Quero reiniciar o serviço vsftpd todos os dias às 6:00 da manhã, mas esse script reinicia o serviço a cada minuto das 6h às 7h. O que devo fazer?

  • 5

Aqui está o temporizador vsftpd-restart.timer

[Unit]
Description=Restart vsftpd daily at 6 AM
After=network.target

[Timer]
Unit=vsftpd-restart.service
OnCalendar=*-*-* 06:00:00
Persistent=true

[Install]
WantedBy=timers.target

Este é o script vsftpd-restart.service

[Unit]
Description=Restart vsftpd daily at 6 AM
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'systemctl stop vsftpd; systemctl start vsftpd'

[Install]
WantedBy=vsftpd-restart.timer

E aqui está o log systemctl vsftpd

Oct 07 06:00:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:00:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:00:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:00:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:00:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:01:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:01:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:01:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:01:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:01:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:02:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:02:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:02:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:02:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:02:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:03:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:03:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:03:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:03:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:03:02 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:04:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:04:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:04:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:04:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:04:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:05:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:05:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:05:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:05:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:05:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:06:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:06:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:06:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:06:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:06:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:07:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:07:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:07:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:07:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:07:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:08:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:08:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:08:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:08:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:08:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:09:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:09:01 test systemd[1]: vsftpd.service: Deactivated successfully.
Oct 07 06:09:01 test systemd[1]: Stopped vsftpd.service - vsftpd FTP server.
Oct 07 06:09:01 test systemd[1]: Starting vsftpd.service - vsftpd FTP server...
Oct 07 06:09:01 test systemd[1]: Started vsftpd.service - vsftpd FTP server.
Oct 07 06:10:01 test systemd[1]: Stopping vsftpd.service - vsftpd FTP server...
Oct 07 06:10:01 test systemd[1]: vsftpd.service: Deactivated successfully.
ubuntu
  • 1 respostas
  • 39 Views
Martin Hope
OrkoPaede
Asked: 2024-10-07 04:37:59 +0800 CST

Proxy reverso na frente do proxy reverso (roteamento baseado em domínio)

  • 4

Aí vem uma pergunta provavelmente estranha e que provavelmente também foi feita de forma errada.

Tenho a seguinte estrutura/plano de rede...:

insira a descrição da imagem aqui

A ideia é que alguém que seja responsável/autorizado pela rede 1 e domínio1.com tenha seu próprio Rev. Proxy que ele gerencie e cuide dos certificados SSL. O mesmo se aplica à rede 2.

A questão é: isso é mesmo possível? Infelizmente, não estou muito familiarizado com SSL e proxies. Suspeito que o Rev. Proxy que detém os certificados SSL deve formar o frontend.? Se for esse o caso, provavelmente não funcionaria de qualquer maneira. Então a questão é se há outra maneira? Um tipo de NAT baseado em http/https? Parece um pouco estranho... Mas acho que a ideia é clara.

Se fosse basicamente possível, então a questão seria se a ordem HaProxy->Nginx é a correta? E se alguém pode me dar uma dica ou link sobre como configurar o proxy frontend corretamente.

Muito obrigado pelas suas respostas.

Atualização: Para aqueles que têm algo semelhante em mente, a configuração do haproxy:

# Automaticaly generated, dont edit manually.
# Generated on: 2024-10-07 20:55
global
    maxconn         1000
    stats socket /tmp/haproxy.socket level admin  expose-fd listeners
    uid         80
    gid         80
    nbthread            1
    hard-stop-after     15m
    chroot              /tmp/haproxy_chroot
    daemon
    tune.ssl.default-dh-param   2048
    server-state-file /tmp/haproxy_server_state

frontend Front
    bind            your_public_ip:80 name your_public_ip:80   
    bind            your_public_ip:443 name your_public_ip:443   
    mode            tcp
    log         global
    timeout client      30000
    tcp-request inspect-delay 5s
    tcp-request content accept if { req_ssl_hello_type 1 }
    acl         app1    req_ssl_sni -m end domain1.de
    acl         app2    req_ssl_sni -m end domain2.de
    use_backend Domain1_ipvANY  if  app1 
    use_backend Domain2_ipvANY  if  app2 

backend Domain1_ipvANY
    mode            tcp
    id          100
    log         global
    timeout connect     30000
    timeout server      30000
    retries         3
    load-server-state-from-file global
    stick-table type binary len 32 size 30k expire 30m
    
    acl clienthello req_ssl_hello_type 1
    acl serverhello rep_ssl_hello_type 2
    
    tcp-request inspect-delay 5s
    tcp-request content accept if clienthello
    
    tcp-response content accept if serverhello
    
    stick on payload_lv(43,1) if clienthello
    
    stick store-response payload_lv(43,1) if serverhello
    server          ProxyMan 192.168.7.1:8443 id 102 check inter 1000

backend Domain2_ipvANY
    mode            tcp
    id          100
    log         global
    timeout connect     30000
    timeout server      30000
    retries         3
    load-server-state-from-file global
    stick-table type binary len 32 size 30k expire 30m
    
    acl clienthello req_ssl_hello_type 1
    acl serverhello rep_ssl_hello_type 2
    
    tcp-request inspect-delay 5s
    tcp-request content accept if clienthello
    
    tcp-response content accept if serverhello
    
    stick on payload_lv(43,1) if clienthello
    
    stick store-response payload_lv(43,1) if serverhello
    server          ProxyMan 192.168.8.1:8443 id 103 check inter 1000
nginx
  • 1 respostas
  • 48 Views
Martin Hope
Tintin
Asked: 2024-10-06 08:53:26 +0800 CST

Movendo daemons Ceph OSD para uma nova especificação de serviço

  • 5

Eu tinha uma especificação de serviço que atribuía todos os SSDs livres aos OSDs:

service\_type: osd  
service\_id: dashboard-tintin-7634852880  
service\_name: osd.dashboard-tintin-7634852880  
placement:  
  host\_pattern: '*'  
spec:  
  data\_devices:  
rotational: false  
  filter\_logic: AND  
  objectstore: bluestore

Quero mais controle sobre quais unidades cada servidor atribui, então criei algumas novas especificações da seguinte forma:

service_type: osd  
service_id: dashboard-tintin-1715222958508  
service_name: osd.dashboard-tintin-1715222958508  
placement:  
  host_pattern: 'host1'  
spec:  
  data_devices:  
rotational: false  
  filter_logic: AND  
  objectstore: bluestore

No Ceph Dashboard -> Services eu pude ver que meus antigos daemons OSD continuaram a rodar sob o controle das antigas definições de serviço. Eu deletei a antiga definição de serviço. Eu recebi um aviso:

If osd.dashboard-tintin-7634852880 is removed the the following OSDs will remain, --force to proceed anyway ...

Como pensei que manter os daemons funcionando é o que eu quero, continuei com --force. Agora o Ceph Dashboard -> Services lista os OSDs e "Unmanaged" e a nova definição de serviço ainda não os pegou. Como posso mover esses daemons OSD sob a nova especificação de serviço?

Se eu parar os daemons, os novos não serão iniciados pela nova definição de serviço. Se eu reimplantar os daemons, eles ainda serão exibidos como "não gerenciados". A única maneira de fazê-los mover sob a nova definição de serviço é parar o daemon e zap a unidade. No entanto, essa não é uma solução prática, dado o tamanho do cluster.

Considerando que os dados estão presentes e corretos, estou surpreso que não haja uma maneira de fazer com que daemons dispersos se curem. (Eu olhei a documentação sobre daemons dispersos, mas eles apenas fazem referência ao contexto de atualização do cluster para o cephadm).

Isto é parte do meu ceph orch ls osd --export:

service_type: osd
service_id: dashboard-tintin-1706434852880
service_name: osd.dashboard-tintin-1706434852880
unmanaged: true
spec:
  filter_logic: AND
  objectstore: bluestore
---
service_type: osd
service_id: dashboard-tintin-1715222958508
service_name: osd.dashboard-tintin-1715222958508
placement:
  host_pattern: ceph-pn-osd1
spec:
  data_devices:
    rotational: false
  filter_logic: AND
  objectstore: bluestore
---
service_type: osd
service_id: dashboard-tintin-1712545397532
service_name: osd.dashboard-tintin-1712545397532
placement:
  host_pattern: ceph-pn-osd2
spec:
  data_devices:
    rotational: false
  filter_logic: AND
  objectstore: bluestore
---
service_type: osd
service_id: dashboard-tintin-1706421419210
service_name: osd.dashboard-tintin-1706421419210
placement:
  host_pattern: ceph-pn-osd3
spec:
  data_devices:
    rotational: false
  filter_logic: AND
  objectstore: bluestore
---
service_type: osd
service_id: dashboard-tintin-1706421419211
service_name: osd.dashboard-tintin-1706421419211
placement:
  host_pattern: ceph-pn-osd4
spec:
  data_devices:
    rotational: false
  filter_logic: AND
  objectstore: bluestore
---
service_type: osd
service_id: dashboard-tintin-1706425693555
service_name: osd.dashboard-tintin-1706425693555
placement:
  host_pattern: ceph-pn-osd5
spec:
  data_devices:
    rotational: false
  filter_logic: AND
  objectstore: bluestore
ceph
  • 1 respostas
  • 36 Views
Martin Hope
Igor Popov
Asked: 2024-10-05 23:50:35 +0800 CST

É seguro usar a opção --append do rsync para fazer backup de arquivos pst e ost do Outlook e arquivos do Thunderbird

  • 4

Planejo fazer backup de e-mails do Outlook de computadores desktop para o NAS. A ferramenta de escolha é o rsnapshot, pois posso instalá-lo no NAS antigo (Synology DS 1010+). O rsnapshot usa o rsync para seu trabalho. O Outlook clássico (2016) salva mensagens em arquivos pst ou ost, que podem crescer para gigabytes quando contêm muitas mensagens de e-mail. A --appendopção rsync pode acelerar consideravelmente o processo de backup de arquivos grandes. Estou preocupado se é seguro fazer backup de arquivos pst e ost usando esta opção. Ou seja, depois de receber ou enviar um novo e-mail, o Outlook provavelmente anexa esses e-mails aos arquivos pst ou ost correspondentes. No entanto, quando alguém exclui um e-mail, como ele é gerenciado em arquivos pst e ost, ou seja, uma parte no meio de um arquivo pst/ost é removida? Se sim, isso tornaria a --appendopção não aplicável. Então, minha pergunta afirma, é seguro usar a --appendopção para backups de arquivos pst e ost do Outlook.

Relacionado a isso, o Thunderbird salva e-mails em arquivos (sem extensão) e, além deles, grava alguns arquivos msf que são muito menores do que os anteriores. É seguro usar --appenda opção rsync para fazer backup de arquivos grandes sem extensão (que contêm e-mails reais)?

rsync
  • 2 respostas
  • 37 Views
Martin Hope
Neil Stephens
Asked: 2024-10-05 12:46:54 +0800 CST

Como encadear SNAT e DNAT no VyOS

  • 6

Olá, gostaria de alguns conselhos sobre como usar o VyOS para um tipo específico de NAT.

Tenho uma situação em que gostaria de fazer NAT de uma conexão correspondida no endereço de destino e na porta de destino. Mas gostaria de traduzir não apenas a porta de destino, mas também o endereço de origem. Então, preciso de um DNAT e um SNAT correspondente.

Haverá várias conexões, e a ideia é que elas obtenham endereços de origem diferentes com base no destino original e sejam redirecionadas para um destino comum.

O problema é que o DNAT vai primeiro, e como ele traduz o destino, não sei o que combinar no SNAT. Se eu conseguisse fazer o SNAT acontecer primeiro, isso resolveria o problema. Ou se eu conseguisse de alguma forma "marcar" a conexão com o DNAT e então combinar isso no SNAT, isso também funcionaria.

Aqui está um exemplo de duas conexões, onde inventei um recurso de marcação de conexão inexistente para ilustrar o que quero fazer:

set nat destination rule 89 destination address 192.168.222.222
set nat destination rule 89 destination port 10089
set nat destination rule 89 translation port 10000
set nat destination rule 89 modify mark '89'
set nat source rule 89 connection mark '89'
set nat source rule 89 translation address 10.1.1.89

set nat destination rule 96 destination address 192.168.222.222
set nat destination rule 96 destination port 10096
set nat destination rule 96 translation port 10000
set nat destination rule 96 modify mark '96'
set nat source rule 96 connection mark '96'
set nat source rule 96 translation address 10.1.1.96

Observe que ambas as conexões são traduzidas para o mesmo destino, então não posso usar isso na regra SNAT.

Existe alguma maneira de fazer SNAT antes de DNAT ou conseguir o que quero de alguma outra forma no VyOS?

Outras coisas a serem observadas:

  • Todas as conexões vêm do mesmo host, então não consigo corresponder nisso
  • A porta de origem original é efêmera, então não posso corresponder a isso
  • O objetivo dessa configuração é simular conexões de vários clientes para um destino comum, quando na realidade elas vêm de um único host usando uma porta de destino diferente para diferenciar cada cliente simulado.

EDIT: Acho que seria possível se eu estivesse usando o iptables em vez do VyOS assim:

iptables -t mangle -A PREROUTING -d 192.168.222.222 -p tcp --dport 10106 -j CONNMARK --set-mark 89
iptables -t nat -A PREROUTING -d 192.168.222.222 -p tcp --dport 10089 -j DNAT --to-destination 192.168.222.222:10000
iptables -t nat -A POSTROUTING -m connmark --mark 89 -j SNAT --to-source 10.1.1.89

iptables -t mangle -A PREROUTING -d 192.168.222.222 -p tcp --dport 10096 -j CONNMARK --set-mark 96
iptables -t nat -A PREROUTING -d 192.168.222.222 -p tcp --dport 10096 -j DNAT --to-destination 192.168.222.222:10000
iptables -t nat -A POSTROUTING -m connmark --mark 96 -j SNAT --to-source 10.1.1.96

Se o iptables consegue fazer isso, eu imagino que o VyOS também consiga... mas talvez não?

routing
  • 1 respostas
  • 58 Views
Martin Hope
Grisu47
Asked: 2024-10-05 05:55:14 +0800 CST

Como os limites de memória no Kubernetes funcionam com o cgroup v2 memory.high?

  • 6

Estou tentando entender como as solicitações e limites de memória funcionam com o cgroup v2. No manifesto do Kubernetes, podemos configurar a solicitação e o limite de memória. Esses valores são então usados ​​para configurar a interface do cgroup:

  • memory.min está definido para solicitação de memória
  • memory.max está definido como limite de memória
  • memory.high é definido como limite de memória * 0,8, a menos que a solicitação de memória == limite, caso em que memory.high permanece indefinido
  • memory.low está sempre desmarcado

memory.max é bastante autoexplicativo: quando um processo no cgroup tenta alocar uma página e isso coloca o uso de memória acima de memory.max e não é possível recuperar páginas suficientes do cgroup para satisfazer a solicitação dentro de memory.max, então o OOM killer é invocado para encerrar um processo dentro do cgroup. memory.high é mais difícil de entender: a documentação do kernel diz que o cgroup é colocado sob "alta pressão de recuperação" quando a marca d'água alta é atingida, mas o que isso significa exatamente?

Mais adiante diz:

Quando atingido, ele limita as alocações, forçando-as a uma recuperação direta para eliminar o excesso, mas nunca invoca o assassino OOM.

Estou correto em assumir que isso significa que quando o cgroup tenta alocar uma página além da marca d'água memory.high, ele vai olhar sincronicamente para o lruvecs e tentar recuperar o máximo de páginas do final das listas até que esteja de volta abaixo da marca d'água alta? Ou a "pressão de recuperação" é algo que acontece assincronamente (por meio do kswapd)?

Pergunta 2: Qual é o objetivo de usar memory.high no Kubernetes? Até onde eu sei, os nós do Kubernetes normalmente são executados sem espaço de swap. As únicas páginas que podem ser recuperadas são páginas anônimas (se houver swap suficiente disponível) e cache de página. Como não há swap, isso deixa apenas o cache de página. O problema é que o cache de página também seria recuperado ao atingir memory.max, antes de invocar o OOM killer como último recurso se nada puder ser recuperado. Então memory.high é essencialmente inútil:

  • Enquanto o cache de página for usado, ele sempre pode ser recuperado e memory.max também faria isso. Com memory.high, estamos apenas limitando o aplicativo antes do que precisamos. Poderíamos muito bem definir memory.max mais baixo em primeiro lugar.

  • Se nenhum cache de página significativo for usado (o que provavelmente é o caso da maioria dos aplicativos que executam o Kubernetes hoje), então nada pode ser recuperado, portanto, não há limitação (nenhuma paginação de memória anônima não utilizada, nenhuma thrashing visível nas informações de bloqueio de pressão que nos avisariam) e encontraremos memory.max sem saber. Usar memory.high não tem efeito.

linux
  • 1 respostas
  • 73 Views
Martin Hope
Carlos Dámaso
Asked: 2024-10-05 00:35:45 +0800 CST

Não é possível implantar o Bitnami Helm

  • 5

Estou tendo alguns problemas com meu cluster Talos Linux.

Atualmente, estou executando 2 máquinas (1 controlplane e 1 worker) no Virtualbox, ambas as máquinas têm 4 GB de RAM e 4 unidades de CPU. Também tenho um servidor TrueNas para fornecer compartilhamentos NFS, o nfsv4 está habilitado no TrueNas e o compartilhamento é acessível em outras máquinas Linux (testado no Ubuntu 20.04 e Kali Linux).

Todas as máquinas têm conectividade. Eu instalei o driver NFS-CSI como a documentação do Kubernetes sugere. Estou tentando implementar o wordpress helm chart do bitnami, e recebo este erro:

 Error: failed to create subPath directory for volumeMount "wordpress-data" of container "wordpress"

O NFS compartilha seu conjunto com 777 permissões. O que você acha que pode ser?

kubernetes
  • 1 respostas
  • 14 Views
Martin Hope
Jose Cabrera Zuniga
Asked: 2024-10-05 00:24:12 +0800 CST

Configurando a replicação do docker mariadb

  • 5

Para entender a replicação do mariadb criei os seguintes containers docker:

docker run -e TZ=America/Denver --name mariadb1 --network=camino_nw \
  -e MARIADB_SERVER_ID=1 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb1 \
  -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53301:3306 \
  -v /home/jcz/Documents/dockerMariadbData1:/var/lib/mysql:z \
  -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest

docker run -e TZ=America/Denver --name mariadb2 --network=camino_nw \
  -e MARIADB_SERVER_ID=2 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb2 \
  -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53302:3306 \
  -v /home/jcz/Documents/dockerMariadbData2:/var/lib/mysql:z \
  -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest

docker run -e TZ=America/Denver --name mariadb3 --network=camino_nw \
  -e MARIADB_SERVER_ID=3 -e MARIADB_LOG_BIN=mysql-bin -e MARIADB_LOG_BASENAME=mariadb3 \
  -e MARIADB_BINLOG_FORMAT=mixed -p 127.0.0.1:53303:3306 \
  -v /home/jcz/Documents/dockerMariadbData3:/var/lib/mysql:z \
  -e MARIADB_ROOT_PASSWORD=S3cretPw -d mariadb:latest

O master é mariadb1 e para este eu executei:

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'S3cretPw';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

Para cada um dos escravos mariadb2 e mariadb3 eu executo:

CHANGE MASTER TO MASTER_HOST='mariadb1',  MASTER_USER='replication_user',  MASTER_PASSWORD='S3cretPw',  MASTER_PORT=3306, MASTER_CONNECT_RETRY=10;

CHANGE MASTER TO MASTER_USE_GTID = slave_pos;

Também iniciei os escravos com START SLAVE;

Depois de executar o

SHOW SLAVE STATUS \G 

Recebi o seguinte erro:

         Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MariaDB server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

Como isso pode acontecer se eu usei

MARIADB_SERVER_ID=1
MARIADB_SERVER_ID=2
MARIADB_SERVER_ID=3

para cada um dos meus contêineres?

Estou tentando seguir:

https://mariadb.com/kb/en/setting-up-replication/

docker
  • 1 respostas
  • 55 Views
Martin Hope
Sam
Asked: 2024-10-05 00:05:14 +0800 CST

O Postfix não pode acessar o Socket Opendkim

  • 5

Tenho um servidor Ubuntu 20.04 e um domínio example.com onde instalei o Postfix e o Opendkim via apt.

Em /etc/opendkim.confeu tenho

Socket local:/run/opendkim/opendkim.sock

O arquivo existe.

$ ls -l /run/opendkim/opendkim.sock
ls: cannot access '/run/opendkim/opendkim.sock': Permission denied
$ sudo ls -l /run/opendkim/opendkim.sock
srwxrwx--- 1 opendkim opendkim 0 Oct  4 21:19 /run/opendkim/opendkim.sock

Adicionei o postfix ao grupo opendkim.

$ groups postfix
postfix : postfix opendkim

Eu também tentei reiniciar por sudo reboot.

Quando eu faço isso

echo "This is the body of the email." | mail -s "Subject of the Email" [email protected]

Mas recebi esse erro.

Oct 04 23:58:24 ubuntu postfix/cleanup[52998]: 
warning: connect to Milter service local:/run/opendkim/opendkim.sock: No such file or directory

Eu olhei mais de perto

$ ps -p 52998 -o pid,comm,user,%cpu,%mem,stime,tty
    PID COMMAND         USER     %CPU %MEM STIME TT
  52998 cleanup         postfix   0.0  0.2 00:00 ?

O usuário é postfix e deveria ter acesso ao arquivo de socket, mas o diário do sistema diz que não.

email
  • 1 respostas
  • 30 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