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
нотации.