У меня следующая установка:
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
Я бы подошел к этому, добавив статический маршрут на шлюз по умолчанию в 192.168.1.0/24
сеть, что означает, что все пакеты 10.10.2.0/24
сеть будет маршрутизироваться через 192.168.1.101
узел.
Затем вам нужно будет включить переадресацию IP на 192.168.1.101
.
Затем вам также нужно будет добавить маршрут к 192.168.1.0/24
через 10.10.2.1
на коробке B.
Таким образом вы можете использовать 10.10.2.x
и 192.168.1.x
адреса в обеих сетях, и весь трафик будет маршрутизироваться между сетями.
Вы не можете использовать виртуальный интерфейс в качестве аргумента -i
. Уловка вместо этого состоит в том, чтобы использовать пункт назначения адрес:
iptables -t nat -A PREROUTING -d 192.168.1.102 -j DNAT --to-destination 10.10.2.2