LINUX.ORG.RU
ФорумAdmin

iptables NAT + 2 туннеля


0

1

здравствуйте
Забрел в тупик с iptables и nat, дакументации перечитал массу, может от этого совсем запутался
Суть в следующем
есть 2 VPN сервера
на первый ( server1 ), коннектимся клиентом, в туннеле поднимается сеть 10.0.0.0, серверный конец туннеля получает 10.0.0.1, клмент 10.0.0.2
добавляем правило
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to ВНЕШНИЙ_ИП
попадаем в инет
теперь поднимаем второй туннель, между VPN серверами, сеть 10.10.0.0, ( сетевуха одна, просто на других портах )
конец второго туннеля на server1 получает 10.10.0.1 на втором сервере 10.10.0.2
собственно затык как завернуть трафик из первого туннеля, во второй, а там на выход
все пытался сделать через SNAT, DNAT, вероятно этого не достаточно ?
извиняюсь если путано
заранее спасибо

Ответ на: комментарий от ZaeLam3l

да честно говоря, если с iptables я хоть какие дела имел ( как раз маршрутизацией и натом не приходилось заниматься ), то с iproute вообще не сталкивался.
не сильно линуксы знаю)
гляну документацию по iproute

sergey_
() автор топика

Я так и не понял зачем заварачивать (тунель2) сеть 10.10.0.0/24 (в первый тунель) 10.0.0.0/24 ... если на конце первого тунеля висит клиент... Если просто надо да доступ в инет второму ВПН серверу... то достаточно просто поменять маску правила айпитаблы 10.0.0.0/24 на 10.0.0.0/8

Tok ★★
()

ВНЕШНИЙ_ИП должен быть 10.10.0.1, а в /proc/sys/net/ipv4/ip_forward должна стоять единичка.

Это если я правильно понял задачу.

post-factum ★★★★★
()
Ответ на: комментарий от Tok

есть задача выстроить цепочку из VPN'ов, весь трафик должен проходить через обы туннеля
то есть точкой входа должен быть server1 а точкой выхода server2

sergey_
() автор топика
Ответ на: комментарий от post-factum

не, ВНЕШНИЙ_ИП там обычный белый IP, грубоговоря 111.111.111.111
форвард пакетов естественно включен и с одним VPN'ом как раз проблем нет, этого правила вполне хватает, а вот для двух, не могу сообразить как это должно быть разрулено

sergey_
() автор топика
Ответ на: комментарий от sergey_

на 1 сервере

echo '150    vpn.out'  >> /etc/iproute2/rt_tables

ip rule add fwmark 1 table vpn.out

iptables -t mangle -A PREROUTING -s 10.8.0.0/24 -i tun1 -j MARK --set-mark 1

iptables -t nat -A POSTROUTING -m mark --mark 1 -s 10.8.0.0/24 -o tun2 -j MASQUERADE



ip route add default dev tun2 table vpn.out

на 2

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

это мой готовый пример с openvpn, ip тут подставь свои и маскарад если надо поменяй на snat

Deleted
()
Ответ на: комментарий от post-factum

мм.. зачем ?
в случае с 1 VPS, на интерфейсах туннеля, 10.0.0.1 - 10.0.0.2, а внешний IP у VPS, 111.111.111.111
из туннеля траф заворачивается через
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 111.111.111.111
то есть ИП интерфейса туннеля, не совпадает с внешним ИП

sergey_
() автор топика
Ответ на: комментарий от sergey_

В аргументе --to указывается айпи, от имени которого будут уходить пакеты дальше.

post-factum ★★★★★
()

iptables, если конечно, не рассматривать особую цель "-j ROUTE" не занимается маршрутизаций трафика. Им можно маркировать пакеты, можно NAT-ить. Но куда пойдёт пакет определяется маршрутами (и таблицей маршрутизации).

Если у вас задача пустить пакеты по схеме:

клиент => тунель_1 => сервер_1 => тунель_2 => сервер_2 => Инет

то зачем вам SNAT на сервере_1? Там просто пишите правило выбора таблицы маршрутизации:

ip rule add dev ТУНЕЛЬ_1 table 100

В таблице 100 пишете маршрут по умолчанию через тунель_2

ip route add default via 10.10.0.2 dev ТУНЕЛЬ_2

На втором сервере прописываете маршут в 10.0.0.0/24 через тунель_2 и SNAT правило для пакетов от 10.0.0.0/24 уходящих через внешний интерфейс.

Там и там включаете маршрутизацию, возможно, отключаете rp_filter и смотрите tcpdump'ом прохождение пакетов через интерфейсы.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.