То, что Вы назвали PAT, работало бы. У Вас должен будет быть iptables, работающий (или некоторый настраиваемый брандмауэр). Затем выполните следующие команды:
iptables -t nat -A PREROUTING -p tcp --dport 22 -p DNAT --to-destination 192.168.0.2
iptables -t nat -A PREROUTING -p tcp --dport 135:139 -p DNAT --to-destination 192.168.0.2
iptables -t nat -A PREROUTING -p tcp --dport 445 -p DNAT --to-destination 192.168.0.2
service iptables save
echo 1 > /proc/sys/net/ipv4/ip_forward
В файле/etc/sysctl.conf, измените строку:
net.ipv4.ip_forward = 0
кому:
net.ipv4.ip_forward = 1
Хм. Ну, предполагая, что переключатель всегда направляет трафик к машине B, можно просто сделать:
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
Это должно сказать машину B, которые, если трафик наталкивается на 192.168.0.0/24, отсылают его eth1.
Это должно работать, и это немного легче, чем установка NAT. Необходимо будет удостовериться, что переключатель знает для маршрутизации трафика для 192.168.0.0/24 к 192.168.109.15 (Eth 0 на B).
@Ian: Маршрутизация не обязательно легка, но дело не в этом трудно также. Это - то, что делают маршрутизаторы. Принятие Вашего переключателя является просто переключателем без возможности маршрутизации, Вы не можете использовать его для установки маршрута, но у Вас должен быть маршрутизатор где-нибудь, или Вашей сетью является просто локальная LAN без доступа в Интернет.
Проверьте свои машины и узнайте, где шлюз по умолчанию (на полях Linux, можно просто ввести route
без аргументов. Ваш маршрут шлюза по умолчанию является тем, который похож:
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Это - Ваш "базовый" маршрутизатор. это - машина, на которую все машины смотрят для выяснения, где машины на других подсетях. Это - то, где необходимо добавить маршрут, указывающий на машину B как маршрутизатор шлюза для 192.168.0.0/24 подсети.
Если можно дать мне некоторую информацию о маршрутизаторе, я могу сказать Вам, как добавить тот маршрут.
Для SSH
На B:
#Arbitrary port
SOME_PORT=2022
iptables -t nat -I PREROUTING -p tcp --dport $SOME_PORT -j DNAT --to-destination 192.168.0.2:22
iptables -I FORWARD -p tcp --dport 22 -d 192.168.0.2 -j ACCEPT
#On a machine type A:
ssh -p $SOME_PORT
Для Samba
Действительно ли возможно смонтировать, что доли C через nfs на B затем устанавливают самбу на B? В противном случае затем можно перенаправить порты самбы:
iptables -t nat -I PREROUTING -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
Если самба уже работает на B, то Вы могли связать дополнительный IP-адрес на B и передать C (Вы могли сделать это для ssh также для хранения порта 22. Опасайтесь сервисов, запускающихся на этих 0.0.0.0 адресах):
ifconfig eth0:1 192.168.109.16 netmask 255.255.255.0
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
РЕДАКТИРОВАНИЕ я вижу, что у Вас все еще есть проблемы; удостоверьтесь что:
Машина C имеет маршрут назад пользователю через машину B. В противном случае затем установите правило подмены о машине B:
iptables-t туземный-I POSTROUTING-d 192.168.0.2-p tcp - ПОДМЕНА dport 22-j
tcpdump может быть полезен для поиска и устранения неисправностей. На машине B:
#capture and display packets heading to 192.168.0.2
tcpdump -i any -p tcp ip host 192.168.0.2 and port 22