Назад | Перейти на главную страницу

Марсианский источник в журнале машины 1 после ssh-DNAT на виртуальную машину, расположенную на машине 2 (крышка машины 1 и машины 2 подключена)

Мой сценарий

Я хотел бы соединить две машины с помощью кроссоверного кабеля и хочу, чтобы они использовали одну сеть, поэтому у меня есть только один DHCP-сервер с одной сетью, и каждый сервер в этой локальной сети может подключаться друг к другу. имеет ли это смысл или два отдельных сервера DHCP и сети лучше?

Проблема

ниже я добавил несколько конфигураций и провел несколько тестов соединения.

коротко:

Если я подключаюсь по ssh к порту 5678 машины1, соединение с 10.62.62.20 работает, и я вижу только записи журнала shorewall из этого подключения на машине1. но если я подключаюсь к порту 5678 машины2, соединение не работает, и я вижу марсианский журнал на машине1

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

Обзор машины

Виртуальные машины machine1:

Виртуальные машины machine2:

Файлы конфигурации

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***

машина1 / и т.д. / сети / интерфейсы

# 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

машина2 / и т.д. / сети / интерфейсы

# 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

Тесты

machine1 (10.62.63.1)

маршруты:

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

машина2 (10.62.63.3)

маршруты:

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

проблема заключалась в исходящих пакетах, а не во входящих.

сервер dhcp предоставил один и тот же шлюз для обеих машин (10.62.63.1), поэтому входящие пакеты dnat на машине2 без проблем достигли своего местоположения (сеть на машине2), но затем возвращаемый пакет был отправлен на шлюз машины1 (10.62.62. 63.1), а не откуда он был (10.62.63.3).

поэтому он приземляется на machine1 как пакет martion.

Решением было добавить теги к DNS (dnsmasq), чтобы виртуальные машины на разных хостах получали разные шлюзы:

/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 ***