Encaminhando portas de uma interface em ponte para um contêiner de convidado no sistema operacional host

1

Eu tenho uma configuração simples.

Mapa mental como tudo se parece

Então eu tenho uma estrutura:

  • Proxmox Host OS (vmbr0, vmbr1)
    • Recipiente 1 (eth0)
    • Recipiente 2 (eth0)

As redes Proxmox:

vmbr0
    Link encap: Ethernet
    inet addr: 136.136.136.161
    Bcast: 136.136.136.191
    Mask: 255.255.255.192

vmbr1
    Link encap: Ethernet
    inet addr: 192.168.1.254
    Bcast: 136.136.1.255
    Mask: 255.255.255.0

A rede do contêiner 1:

eth0
    Link encap: Ethernet
    inet addr: 136.211.123.180
    Bcast: 136.211.123.180
    Mask: 255.255.255.255

A rede do contêiner 2:

eth0
    Link encap: Ethernet
    inet addr: 192.168.1.1
    Bcast: 192.168.1.255
    Mask: 255.255.255.0

O iptables normal do proxmox se parece com isso. (Exemplo do TeamSpeak³ para a frente para a porta 9987 do udp)

~# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       udp  --  anywhere             anywhere             udp dpt:9987 to:192.168.1.1:9987

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE all  --  192.168.1.0/24       anywhere

Isso é adicionado via:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j MASQUERADE
iptables -t nat -A PREROUTING -i vmbr0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987

E a questão agora é como fazer um encaminhamento do contêiner 1 para o contêiner 2 também?

No momento, as solicitações vão para o Host Proxmox e elas encaminharão essas solicitações para os contêineres via iptables. Mas o container 1 tem um endereço IP estático atribuído porque normalmente todas as portas devem ir para este servidor. - exceto alguns que eu quero encaminhar para o outro container.

Então, como posso encaminhar solicitações para o outro endereço IP estático do contêiner 1 para o contêiner 2?

O contêiner 2 é o contêiner TS³. O contêiner 1 é o contêiner "endereço IP estático". E o host proxmox também tem um endereço IP próprio, que é usado no momento para todas essas solicitações.

Agradecemos antecipadamente por qualquer ideia.

    
por Patrick 31.03.2016 / 02:41

1 resposta

1

Eu simplesmente configuro o endereço público .180 na interface do sistema operacional host vmbr0 e, em seguida, faço o encaminhamento de porta no sistema operacional host.

Não vejo o ponto de ter a VM separada aqui. Se você realmente quiser fazer mais complexidade com uma VM separada, tente isso.

Sua configuração de rede do contêiner 1 é ímpar, você não pode acessar nenhum outro host na rede 136.211.123.128/255.255.255.192 desse contêiner. Você deve usar os mesmos endereços de máscara de rede e de transmissão usados no sistema operacional host.

Para o encaminhamento real, você precisa adicionar uma segunda interface ao contêiner 1, que é vinculado a vmbr1 . Em seguida, você pode criar uma regra de encaminhamento de porta no contêiner 1:

iptables -t nat -A PRETROUTING -i eth0 -p udp -m udp --dport 9987 -j DNAT --to-destination 192.168.1.1:9987

Assim, o contêiner 1 tem uma interface nas redes externa e interna e, em seguida, pode fazer a porta avançar.

    
por 31.03.2016 / 09:23