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 / Perguntas / 1131478
Accepted
chutz
chutz
Asked: 2023-05-19 06:01:56 +0800 CST2023-05-19 06:01:56 +0800 CST 2023-05-19 06:01:56 +0800 CST

Como configurar um contêiner podman para permitir que ele se comunique com o host também?

  • 772

É possível...

  • executar um contêiner com podman
  • que tem um IP na mesma sub-rede em que o host está
  • é acessível de todos os outros hosts na sub-rede
  • incluindo o próprio host ?

Tive sucesso parcial usando drivers macvlan e ipvlan - sou capaz de executar um contêiner, fornecer a ele um endereço IP e esse IP pode ser acessado de todos os outros hosts da rede.

No entanto, não consigo acessar de ou para o host que executa o contêiner.

Eu até tentei com as versões mais recentes de podman , netavark , cni-plugins construídos a partir da fonte, que habilitaram o driver ipvlan com o mesmo resultado.

Prefiro um ponteiro a um guia que descreva como fazer isso, embora conselhos para solução de problemas também sejam bem-vindos.

networking
  • 2 2 respostas
  • 101 Views

2 respostas

  • Voted
  1. Best Answer
    chutz
    2023-05-30T12:54:20+08:002023-05-30T12:54:20+08:00

    Para fazer isso, eu só tive que adicionar uma interface ipvlan extra no host que me permitisse falar com os contêineres se o podman também usasse ipvlan.

    • Especifique a rede a partir da qual os hosts acessarão esse contêiner. Por exemplo,10.0.0.0/16
    • Aloque uma sub-rede para usar nos contêineres. Melhor se for uma sub-rede da minha rede doméstica. Por exemplo, 10.0.99.0/24. Esta sub-rede deve ser dedicada aos contêineres neste host.
    • Crie uma rede ipvlan podman para usar com os contêineres. Será a mesma sub-rede da rede do host, mas a alocação de IP deve ser definida a partir da sub-rede menor. Por exemplo:
    sudo podman network create -d ipvlan --subnet 10.0.0.0/16 --ip-range 10.0.99.0/24 --ipam-driver host-local podnet
    
    • Crie uma interface IPVlan de host e atribua a ela um endereço IP da rede do contêiner. Por exemplo, 10.0.99.1. Essa é a interface que o host pode usar para conversar com os contêineres.
    • Atualize a rede podman para ignorar o endereço IP usado pelo host: sudo vim /etc/cni/net.d/podnet.conflist e altere rangeStart de 10.0.99.1para 10.0.99.2.

    Para criar a interface ipvlan com systemd, tive que

    1. Adicione um IPVLAN = podnetà [Network]seção do arquivo que define minha interface de rede do host, que criará uma podnetinterface de rede conectada ao pai.
    2. Crie a configuração para a interface:
    cat > /etc/systemd/network/podnet.netdev <<EOF
    [NetDev]
    Name = podnet
    Kind = ipvlan
    EOF
    cat > /etc/systemd/network/podnet.network <<EOF
    [Match]
    Name = podnet
    [Network]
    IPForward = yes
    Address = 10.0.99.1/24
    EOF
    

    Com toda a justiça, a mesma abordagem funcionou com macvlan em vez de ipvlan, mas partes da minha rede não conseguiram alcançar o host com a interface MACVlan, então mudei para IPVlan para melhor interoperabilidade.

    Outro problema que enfrentei foi devido ao padman do podman ser netavark, e o suporte netavark IPVlan está disponível apenas no podman 4.5+, enquanto eu ainda estava no 4.3. Mudar o back-end de rede para cnicorrigir esse problema.

    cat > /etc/containers/containers.conf <<EOF
    [network]
    network_backend = "cni"
    EOF
    
    • 1
  2. Gal Weiss
    2023-05-21T03:52:52+08:002023-05-21T03:52:52+08:00

    Não é exatamente o que você perguntou, mas você pode simplesmente compartilhar o mesmo endereço IP do host, leia para ver se é de alguma ajuda para você:

    O que você precisa fazer é adicionar ao podman runIsso --network=host significa essencialmente que você compartilha a mesma pilha de rede com a máquina host, então você deve levar em consideração o seguinte:

    • você não pode usar as mesmas portas de escuta do host. por exemplo - se você executar um servidor como porta 80, o host não poderá fazer isso.
    • seu contêiner pode acessar serviços locais (127.0.0.1) no host e vice-versa. basicamente, você fica muito menos "contido" dessa maneira. isso tem prós e contras, certifique-se de saber o que está fazendo.
    • 0

relate perguntas

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