Ситуация:
прокси/роутер с двумя интерфейсами (eth0 - Локалка, eth1- интернет).
213.0.0.153 - шлюз провайдера
213.0.0.154 - eth1
213.0.0.155 - это должен быть ип пробрасываемой машины.
Посредством iptables нужно выбросить внутреннюю машину наружу. Ее ип адрес 192.168.8.25Делаю так:
1. Сначала делаю alias для еще одного ип адреса:eth1:0 Link encap:Ethernet HWaddr 00:07:E9:83:8E:AA
inet addr:213.0.0.155 Bcast:213.221.44.159 Mask:255.255.255.248
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:20 Base address:0xe0002. Извне этот адрес пингуется. Делаю route add 213.0.0.155 gw 213.0.0.153 netmask 0.0.0.0 metric 1 dev eth1:0
Вывод route:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
213.0.0.155 213.0.0.153 255.255.255.255 UGH 1 0 0 eth13. iptables -t nat -A PREROUTING -p tcp -d 213.0.0.155 -j DNAT --to-destination 192.168.8.25
4. iptables -A FORWARD -i eth1 -d 192.168.8.25 -j ACCEPT
Итог- не работает. По выводу iptables -L -v -n видно что до FORWARD цепочки дело не доходит.
>Делаю route add 213.0.0.155 gw 213.0.0.153 netmask 0.0.0.0 metric 1 dev eth1:0Мне кажется в этом и зарыта собака. Сдается мне, совершенно лишнее телодвижение и, похоже, не правильное. На хосте должны быть: шлюз по умолчению на 213.0.0.153 через eth1 и, естественно, маршрут на 192.168.8.0/24 через eth0. Еще можно добавить запись для сети 213.0.0.152/255.255.255.248 без шлюза, только через eth1 (на первый взляд, будет работать и без этого)
На маршрутизаторе провайдера должен быть маршрут на всю сеть 213.0.0.152/255.255.255.248 (скорее всего - так и есть). Туда и попадает .155
>>Делаю route add 213.0.0.155 gw 213.0.0.153 netmask 0.0.0.0 metric 1 dev eth1:0
>
>Мне кажется в этом и зарыта собака. Сдается мне, совершенно лишнее телодвижениеНо без этого тоже не работает. То есть явно тут собака порылась.
>Но без этого тоже не работает. То есть явно тут собака порылась.укажи route ISP на 155 машине
или введи ее в локалку и пропиши SNAT, типа
-A POSTROUTING -t nat -o eth1 -j SNAT --to-source=....153
>-A POSTROUTING -t nat -o eth1 -j SNAT --to-source=....153не 153, а 154 точнее, ip на eth1
Не понятно... Тебе тачку выкинуть надо из локалки7?? Тогда причем здесь DNAT???
Тебе нужно использовать SNAT --to-source 192.....
Или я просто не так понял, проясни
>>-A POSTROUTING -t nat -o eth1 -j SNAT --to-source=....153
>
>не 153, а 154 точнее, ip на eth1На роутере, который является дефолтным гейтвеем для машины .155 сделал маршрут до сети 213.0.0.152 через 192.168.8.2 (это прокси с НАТом).
И все равно не работает ;-)
сети 213.0.0.152 через 192.168.8.2 (это прокси с НАТом).
>И все равно не работает ;-)
Но зато по iptables -L -v -n видно, что пакеты через цепочку FORWARD проходят.
Но куда они теряются?
1) Создал доаолнительный интерфейс
2) iptables -A FORWARD -s 192.168.какойтебенадо -d any/0 -j ACCEPT
3) iptables -A -t nat POSTROUTING -s 192.168.какойтебенадо -d any/0 - j SNAT --to-source 213.0.0.155
Нужно, чтоб извне (из интернета) машина 192.168.8.6 была доступна по ип адресу 213.0.0.155... Это же DNAT получается?
Она сама видит весь интернет через SNAT:-A POSTROUTING -s 192.168.8.6 -o eth1 -j SNAT --to-source 213.0.0.154
-A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.8.6 -i eth0 -o eth1 -j ACCEPT
>Нужно, чтоб извне (из интернета) машина 192.168.8.6 была доступна по ип адресу
>213.0.0.155... Это же DNAT получается?
>Она сама видит весь интернет через SNAT:
>
>-A POSTROUTING -s 192.168.8.6 -o eth1 -j SNAT --to-source 213.0.0.154
>-A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
>-A FORWARD -s 192.168.8.6 -i eth0 -o eth1 -j ACCEPT
так вообще проблем не вижу...
Я спокойно делаю так для 139 порта и все прекрасно работает..
1) Опять таки создал интерфейс.
2) То же самое да наоборот
iptables -A -t nat PREROUTING -d ip_дополнительного_инт-са -j DNAT --to-destination 192.168.какойтебенадо
3) И разрешаешь форварды в обе стороны...Ну или 2 пункт после третьего, сам разберешься, -А в конец добавляет вроде
Покажи полный вывод
route -n