История изменений
Исправление sparks, (текущая версия) :
Чтожж
COMPUTER.ETH0 -> LAN1 (10.0.0.0/24)
COMPUTER.ETH1 -> LAN2 (10.0.0.0/24)
Ты хочешь сроутить LAN1 для SERVER через 10.0.0.254 из LAN2
Решение нормальным не будет, но раз уж упарываться, то по полной, приступим:
-
на хостах из LAN1 тебе надо будет добавть маршрут: SERVER.IP/32 via COMPUTER.ETH0.IP
-
Окэ, теперь клиенты LAN1 знают куда идти, но всё ещё в рамках одного широковещательного домена, значит будут по ARP спрашивать MAC COMPUTER.ETH0 и слать пакеты с DST ADDR SERVER.IP в направлении COMPUTER.ETH0, значит нам надо расказать COMPUTER что с ними дальше делать, а конкретно перекинуть на другую сетевую и сроутить, для этого создадим правило - что для SERVER.IP пришедших ETH0 роутить в соответствии с отдельной таблицей таблицей
ip rule add to SERVER.IP iif ETH0 lookup someother_table
Ну и добавим собсно маршрут до SERVER
ip route add SERVER.IP/32 via 10.0.0.254 table someother_table
- Гуд, в ту сторону пакет ушел, теперь надо затолкать обратно, то что придёт в ответ, ибо придёт оно с DST IP из LAN1 на интерфейс LAN2, хмм, может NAT логичнее? Но нет, это для слабаков не умеющих получать от жизни удовольствие, мы просто завернём трафик пришедший от SERVER.IP на LAN2 обратно в LAN1
ip rule add from SERVER.IP iif ETH1 lookup yetanother_table_for_ETH0
- Profit
Вроде ничего не упустил
А вот и упустил, роутер 10.0.0.254 будет искать адресата из ответного пакета пришедшего с SERVER в LAN2, а нам надо чтобы он прилетел на COMPUTER.ETH1
Но, где наша не пропадала?
Прикрутим SNAT, как несложно догадаться по тексту правила для iptables, SNAT выполняется в цепочке POSTROUTING, значит пакет адрес которого мы будем подменять должен быть уже на нужном интерфейсе, шаги 1,2 оставляем без изменения
Шаг 3. Тупо снатим то что предназначается для SERVER через COMPUTER.ETH1
IPTABLES -t nat -A POSTROUTING -d SERVER.IP -j SNAT --to-source COMPUTER.ETH1.IP
Вот теперь уже точно Profit
Исправление sparks, :
Чтожж
COMPUTER.ETH0 -> LAN1 (10.0.0.0/24)
COMPUTER.ETH1 -> LAN2 (10.0.0.0/24)
Ты хочешь сроутить LAN1 для SERVER через 10.0.0.254 из LAN2
Решение нормальным не будет, но раз уж упарываться, то по полной, приступим:
-
на хостах из LAN1 тебе надо будет добавть маршрут: SERVER.IP/32 via COMPUTER.ETH0.IP
-
Окэ, теперь клиенты LAN1 знают куда идти, но всё ещё в рамках одного широковещательного домена, значит будут по ARP спрашивать MAC COMPUTER.ETH0 и слать пакеты с DST ADDR SERVER.IP в направлении COMPUTER.ETH0, значит нам надо расказать COMPUTER что с ними дальше делать, а конкретно перекинуть на другую сетевую и сроутить, для этого создадим правило - что для SERVER.IP пришедших ETH0 роутить в соответствии с отдельной таблицей таблицей
ip rule add to SERVER.IP iif ETH0 lookup someother_table
Ну и добавим собсно маршрут до SERVER
ip route add SERVER.IP/32 via 10.0.0.254 table someother_table
- Гуд, в ту сторону пакет ушел, теперь надо затолкать обратно, то что придёт в ответ, ибо придёт оно с DST IP из LAN1 на интерфейс LAN2, хмм, может NAT логичнее? Но нет, это для слабаков не умеющих получать от жизни удовольствие, мы просто завернём трафик пришедший от SERVER.IP на LAN2 обратно в LAN1
ip rule add from SERVER.IP iif ETH1 lookup yetanother_table_for_ETH0
- Profit
Вроде ничего не упустил
А вот и упустил, роутер 10.0.0.254 будет искать адресата из ответного пакета пришедшего с SERVER в LAN2, а нам надо чтобы он прилетел на COMPUTER.ETH1
Исходная версия sparks, :
Чтожж
COMPUTER.ETH0 -> LAN1 (10.0.0.0/24)
COMPUTER.ETH1 -> LAN2 (10.0.0.0/24)
Ты хочешь сроутить LAN1 для SERVER через 10.0.0.254 из LAN2
Решение нормальным не будет, но раз уж упарываться, то по полной, приступим:
-
на хостах из LAN1 тебе надо будет добавть маршрут: SERVER.IP/32 via COMPUTER.ETH0.IP
-
Окэ, теперь клиенты LAN1 знают куда идти, но всё ещё в рамках одного широковещательного домена, значит будут по ARP спрашивать MAC COMPUTER.ETH0 и слать пакеты с DST ADDR SERVER.IP в направлении COMPUTER.ETH0, значит нам надо расказать COMPUTER что с ними дальше делать, а конкретно перекинуть на другую сетевую и сроутить, для этого создадим правило - что для SERVER.IP пришедших ETH0 роутить в соответствии с отдельной таблицей таблицей
ip rule add to SERVER.IP iif ETH0 lookup someother_table
Ну и добавим собсно маршрут до SERVER
ip route add SERVER.IP/32 via 10.0.0.254 table someother_table
- Гуд, в ту сторону пакет ушел, теперь надо затолкать обратно, то что придёт в ответ, ибо придёт оно с DST IP из LAN1 на интерфейс LAN2, хмм, может NAT логичнее? Но нет, это для слабаков не умеющих получать от жизни удовольствие, мы просто завернём трафик пришедший от SERVER.IP на LAN2 обратно в LAN1
ip rule add from SERVER.IP iif ETH1 lookup yetanother_table_for_ETH0
- Profit
Вроде ничего не упустил