Есть у меня своя локальная сеть 192.168.0.0/24, есть провайдерская сеть 10.0.0.0/8
Есть DC++ Хаб в моей сети, путь будет 192.168.0.1, должен быть виден из 10.0.0.0/8
Есть шлюз из моей сети в провайдерскую
ну и наконец есть пользовательский компьютер (192.168.0.10) в моей сети, которому нужно работать с хабом в активном режиме.
мой IP в сети провайреда будет 10.0.0.1
Всю настройку будем проводить на шлюзе.
Проблем с видимостью из 10.0.0.0 моего хаба не возникает:
iptables -A PREROUTING -d 10.0.0.1 -p tcp --dport 411 \
-j DNAT --to 192.168.0.1
в пассивном режиме уже можно работать, цепляясь к хабу по внутреннему адресу. Можно убрать проверку IP из настроек хаба, и сообщать ему внешний (10.0.0.1) адрес. Но это костыль, и далеко не всегда работающий.
Лучше подменять адреса
#Маркируем пакет, чтобы не потерялся
iptables -t mangle -A PREROUTING -d 10.0.0.1 -p tcp --dport 411 \
-s 192.168.0.0/24 -j MARK --set-mark 1
# Подменяем маркированным пакетам адреса на нужные
iptables -t nat -A PREROUTING -m mark --mark 1 \
-j DNAT --to 192.168.0.1
iptables -t nat -A POSTROUTING -m mark --mark 1 \
-j SNAT --to 10.0.0.1
Вот и все, осталось только DNAT-ить порт данных для клиента:
iptables -A PREROUTING -d 10.0.0.1 -p tcp --dport 30005 \
-j DNAT --to 192.168.0.10
ЗЫ
Способ с маркировкой пакетов мне нравится больше, т.к. для сотворения аналогичных действ остальными сервисами остается только пометить пакет нужной меткой.
Есть DC++ Хаб в моей сети, путь будет 192.168.0.1, должен быть виден из 10.0.0.0/8
Есть шлюз из моей сети в провайдерскую
ну и наконец есть пользовательский компьютер (192.168.0.10) в моей сети, которому нужно работать с хабом в активном режиме.
мой IP в сети провайреда будет 10.0.0.1
Всю настройку будем проводить на шлюзе.
Проблем с видимостью из 10.0.0.0 моего хаба не возникает:
iptables -A PREROUTING -d 10.0.0.1 -p tcp --dport 411 \
-j DNAT --to 192.168.0.1
в пассивном режиме уже можно работать, цепляясь к хабу по внутреннему адресу. Можно убрать проверку IP из настроек хаба, и сообщать ему внешний (10.0.0.1) адрес. Но это костыль, и далеко не всегда работающий.
Лучше подменять адреса
#Маркируем пакет, чтобы не потерялся
iptables -t mangle -A PREROUTING -d 10.0.0.1 -p tcp --dport 411 \
-s 192.168.0.0/24 -j MARK --set-mark 1
# Подменяем маркированным пакетам адреса на нужные
iptables -t nat -A PREROUTING -m mark --mark 1 \
-j DNAT --to 192.168.0.1
iptables -t nat -A POSTROUTING -m mark --mark 1 \
-j SNAT --to 10.0.0.1
Вот и все, осталось только DNAT-ить порт данных для клиента:
iptables -A PREROUTING -d 10.0.0.1 -p tcp --dport 30005 \
-j DNAT --to 192.168.0.10
ЗЫ
Способ с маркировкой пакетов мне нравится больше, т.к. для сотворения аналогичных действ остальными сервисами остается только пометить пакет нужной меткой.