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

Переадресация IP / NAT уровня 3 между двумя интерфейсами

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

У меня есть две сети (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 не существует, и я использую их для связи с другой сетью, ПОТОМУ ЧТО я не могу настроить шлюз для запроса неизвестных сетей и добавления статических маршрутов.

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

Спасибо!

Вам необходимо назначить эти 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 обозначение.