IP-пересылка уровня 3 /NAT между двумя интерфейсами

У меня странная конфигурация, посмотрим, сможете ли вы дать мне несколько советов:)

У меня есть две сети (10.X/24 и 20.X/24), соединенные между собой машиной linux. У этого linux два интерфейса, каждый из которых подключен к одной из этих сетей. Устройства, подключенные к этим сетям, не имеют шлюза, и я не могу изменить это, ни установить дополнительное программное обеспечение как vpn, и т.д... Также я не могу изменить маску подсети.

Я хочу соединить одно устройство в каждой сети, и я подумал о том, чтобы настроить что-то вроде IP FORWARDING, но меняя SRC и DST, я думаю, что это больше похоже на NAT. Идея состоит в том, чтобы сделать это, если я пинг до 20.254 (не существует) с 20.50(устройство из сети A), он перенаправляет этот пакет на 10.50 с изменением src на 10.254. Это что-то вроде виртуальных IP-адресов.

Основная идея заключается в том, чтобы сделать этот перевод:

вход eth0 (сеть A) SRC 20.50 DST 20.254 -> выход eth1 SRC 10.254 DST 10.50

вход eth1 (сеть B) SRC 10.50 DST 10.254 -> выход eth0 SRC 20.254 DST 20.50

Имейте в виду, что адресов 10.254 и 20.254 не существует, и я использую их для связи с другой сетью, ПОТОМУ ЧТО я не могу установить шлюз для запроса неизвестных сетей или добавления статических маршрутов.

Посмотрим, сможет ли кто-нибудь дать мне лучший способ сделать это.

Спасибо!

1 ответ

Решение

Вам необходимо назначить эти IP-адреса для вашего шлюза, например:

ip addr add 192.168.10.254/24 dev eth0
ip addr add 192.168.20.254/24 dev eth1

Затем вы можете выполнить перевод, используя правила NAT, такие как:

iptables -t nat -A PREROUTING -i eth0 -s 192.168.20.50 -d 192.168.20.254 -j DNAT --to-destination 192.168.10.50
iptables -t nat -A POSTROUTING -o eth1 -d 192.168.10.50 -j MASQUERADE

Другой перевод можно сделать аналогично. Кроме того, вышеприведенные правила написаны на основе вашего примера перевода. Вы можете обобщить проверку подсети, используя /24 нотации.

Другие вопросы по тегам