Fonte marciana no log da máquina1 após ssh-DNAT para a máquina virtual localizada na máquina2 (máquina1 e máquina2 xover conectada)

1

Meu cenário

  • 2 máquinas físicas, cada uma com 2 interfaces de rede (eth0, eth1).
  • eles agem como host da máquina virtual
  • apenas para uma máquina, a rede funciona sem problemas
  • primeiro eu tinha duas redes separadas e cada máquina tem um próprio servidor dhcp virtual em execução
  • então eu tentei mesclar as redes separadas em um
  • firewall: shorewall (política de conexão para lan = permitir em ambas as máquinas)
  • servidor dhcp: dnsmasq
  • ambas as máquinas podem se conectar à internet

Eu gostaria de conectar as duas máquinas ao crossovercable e quero que elas compartilhem uma rede, então eu tenho apenas um servidor dhcp com uma rede e cada servidor nesta lan pode se conectar uns aos outros. isso faz sentido ou são dois servidores dhcp separados e redes da melhor maneira?

Problema

abaixo eu adicionei algumas configurações e fiz alguns testes de conexão.

em suma :

  • machine1 + machine2 pode alcançar ips na máquina1
  • machine1 + machine2 não pode alcançar ips na máquina2
  • machine1 + machine2 pode alcançar ips na máquina2
  • external dnat (por exemplo, ssh) funciona para a máquina1 (porta 5678 - > 10.62.63.20:22)
  • external dnat (por exemplo ssh) não funciona para machine2 (porta 5678 - > 10.62.63.30:22)

se eu conecto ssh à porta 5678 da máquina 1, a conexão com 10.62.62.20 funciona e só vejo entradas de log shorewall nessa conexão na máquina1. mas se eu conectar à porta machine2 5678 a conexão não funciona e eu posso ver um log marciano na máquina1

Nov 29 15:26:57 machine1 kernel: [ 7495.749894] martian source **ssh.client.ip.addr** from **yyy.yyy.yyy.yyy**, on dev br1

Visão geral da máquina

máquinas virtuais machine1:

  • dhcp 10.62.63.2
  • web1 10.62.63.20

máquinas virtuais machine2:

  • web2 10.62.63.30

Arquivos de configuração

machine1 / etc / shorewall / rules

***snip***
DNAT:debug  net  lan:10.62.63.20:22  tcp  5678  -  xxx.xxx.xxx.xxx
***snip***

machine2 / etc / shorewall / rules

***snip***
DNAT:debug  net  lan:10.62.63.30:22  tcp  5678  -  yyy.yyy.yyy.yyy
***snip***

machine1 / etc / networking / interfaces

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
#allow-hotplug eth0 
auto eth0
iface eth0 inet manual


# device: eth1
#allow-hotplug eth1
auto eth1
iface eth1 inet manual 

auto br0
iface br0 inet static
  address   xxx.xxx.xxx.xxx
  broadcast xxx.xxx.xxx.xxx
  netmask   xxx.xxx.xxx.xxx
  gateway   xxx.xxx.xxx.xxx
  bridge_ports eth0
  bridge_fd 0
  bridge_hello 2
  bridge_maxage 12
  bridge_maxwait 0
  bridge_stp off


auto br1
iface br1 inet static
  address 10.62.63.1
  broadcast 10.62.63.255
  netmask 255.255.255.0
  bridge_ports eth1
  bridge_fd 0
  bridge_hello 2
  bridge_maxage 12
  bridge_maxwait 0
  bridge_stp off

machine2 / etc / networking / interfaces

# Loopback device:
auto lo
iface lo inet loopback

# device: eth0
#allow-hotplug eth0 
auto eth0
iface eth0 inet manual


# device: eth1
#allow-hotplug eth1
auto eth1
iface eth1 inet manual 

auto br0
iface br0 inet static
  address   yyy.yyy.yyy.yyy
  broadcast yyy.yyy.yyy.yyy
  netmask   yyy.yyy.yyy.yyy
  gateway   yyy.yyy.yyy.yyy
  bridge_ports eth0
  bridge_fd 0
  bridge_hello 2
  bridge_maxage 12
  bridge_maxwait 0
  bridge_stp off


auto br1
iface br1 inet static
  address 10.62.63.3
  broadcast 10.62.63.255
  netmask 255.255.255.0
  bridge_ports eth1
  bridge_fd 0
  bridge_hello 2
  bridge_maxage 12
  bridge_maxwait 0
  bridge_stp off

Testes

machine1 (10.62.63.1)

Rotas

:

ip route show
yyy.yyy.yyy.yyy/yy dev br0  proto kernel  scope link  src yyy.yyy.yyy.yyy
10.62.63.0/24 dev br1  proto kernel  scope link  src 10.62.63.1
default via yyy.yyy.yyy.yyy dev br0
  • ping 10.62.63.3 para br1 ip (remoto): ok
  • ping 10.62.63.1 para br1 ip (local): ok
  • ping 10.62.63.2 para dns (local): ok
  • ping 10.62.63.20 para web01 (local): ok
  • ping 10.62.63.30 para web02 (remoto): ok
  • ssh 10.62.63.20 para web01 (local): ok
  • ssh 10.62.63.30 para web02 (remoto): ok

machine2 (10.62.63.3)

Rotas

:

ip route show
yyy.yyy.yyy.yyy/yy dev br0  proto kernel  scope link  src yyy.yyy.yyy.yyy
10.62.63.0/24 dev br1  proto kernel  scope link  src 10.62.63.3
default via yyy.yyy.yyy.yyy dev br0
  • ping 10.62.63.3 para br1 ip (local): ok
  • ping 10.62.63.1 para br1 ip (remoto): ok
  • ping 10.62.63.2 para dns (remoto): ok
  • ping 10.62.63.20 para web01 (remoto): ok
  • ping 10.62.63.30 para web02 (local): ok
  • ssh 10.62.63.20 para web01 (remoto): ok
  • ssh 10.62.63.30 para web02 (local): ok
por c33s 28.11.2012 / 20:27

1 resposta

1

o problema foi os pacotes de saída, não a entrada.

o servidor dhcp forneceu o mesmo gateway para ambas as máquinas (10.62.63.1), portanto os pacotes de entrada dnat na máquina2 não tiveram problemas para alcançar sua localização (web na máquina2), mas o pacote de retorno foi enviado para o gateway da máquina1 (10.62.63.1) e não de onde estava vindo (10.62.63.3).

para que ele caia na máquina1 como pacote de martion.

A solução

foi adicionar tagging no dns (dnsmasq) para que as máquinas virtuais nos diferentes hosts obtenham diferentes gateways:

/etc/dnsmasq.conf

*** snip ***

dhcp-host=set:machine1,ff:ff:ff:ff:ff:ff,web01,10.62.63.20
dhcp-host=set:machine2,ee:ee:ee:ee:ee:ee,web02,10.62.63.30

dhcp-option=tag:machine1,option:router,10.62.63.1
dhcp-option=tag:machine2,option:router,10.62.63.3

*** snip ***
    
por 29.11.2012 / 19:05