Я хотел бы соединить две машины с помощью кроссоверного кабеля и хочу, чтобы они использовали одну сеть, поэтому у меня есть только один 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 / 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
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
на br1 ip (удаленный): окping 10.62.63.1
на br1 ip (локальный): окping 10.62.63.2
в dns (местный): окping 10.62.63.20
на web01 (локальный): окping 10.62.63.30
на web02 (удаленный): окssh 10.62.63.20
на web01 (локальный): окssh 10.62.63.30
на web02 (удаленный): ок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
на br1 ip (локальный): окping 10.62.63.1
на br1 ip (удаленный): окping 10.62.63.2
в dns (удаленный): окping 10.62.63.20
на web01 (удаленный): окping 10.62.63.30
на web02 (местный): окssh 10.62.63.20
на web01 (удаленный): окssh 10.62.63.30
на web02 (местный): хорошопроблема заключалась в исходящих пакетах, а не во входящих.
сервер 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 ***