
У меня следующая настройка:
Box A
eth0 - 192.168.1.101
eth1 - 10.10.2.1
Box B
eth0 - 10.10.2.2
У ящика A есть доступ в Интернет через eth0. Я хочу, чтобы ящик B был виден в сети 192.168.1.0/24, чтобы я мог подключиться к нему по ssh напрямую с другого ящика, но ящик A также должен быть доступен.
Я думал о создании виртуального IP-адреса для eth0 на Box A, а затем о перенаправлении всего трафика на Box B с помощью
ifconfig eth0:0 192.168.1.102
iptables -t nat -A PREROUTING -i eth0:0 -j DNAT --to-destination 10.10.2.2
но, похоже, это не работает.
Также включена переадресация IP и у Box B есть доступ в Интернет с
iptables -t nat -A POSTROUTING -j MASQUERADE
решение1
Я бы подошел к этому путем добавления статического маршрута на шлюзе по умолчанию в 192.168.1.0/24
сети, который бы указывал, что все пакеты в 10.10.2.0/24
сети будут маршрутизироваться через 192.168.1.101
узел.
Затем вам необходимо включить IP-пересылку на 192.168.1.101
.
Затем вам также потребуется добавить маршрут к 192.168.1.0/24
via 10.10.2.1
на Box B.
Таким образом, вы можете использовать адреса 10.10.2.x
и 192.168.1.x
в обеих сетях, и весь трафик будет маршрутизироваться между сетями.
решение2
Вы не можете использовать виртуальный интерфейс в качестве аргумента -i
. Вместо этого трюк заключается в использовании назначенияадрес:
iptables -t nat -A PREROUTING -d 192.168.1.102 -j DNAT --to-destination 10.10.2.2