У меня странная конфигурация, посмотрим, не дадите ли вы мне какой-нибудь совет :)
У меня две сети (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-адресов.
Основная идея состоит в том, чтобы сделать это преобразование:
input eth0 (network A) SRC 20.50 DST 20.254 -> output eth1 SRC 10.254 DST 10.50
input eth1 (network B) SRC 10.50 DST 10.254 -> output 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
.