Задача. Есть сервер, на нём постфикс -- почтовый сервер мелкой организации. Есть удалённый сервер. На нём есть openvpn и можно делать что угодно, можно выделить отдельный IP с которого всё хотелось бы перенаправить на локальный сервер. Ставить же postfix на удалённый сервер не хочется по ряду причин... А http и ftp -- просто невозможно.Хотелось бы такую маршрутизацию, чтоб всё попадающее на 25 порт удалённого сервера через VPN попадало на 25 порт локального сервера, к postfix. И наоборот тоже... И для всех остальных протоколов тоже.
В принципе, это всё легко делается через iptables ... -j SNAT. Но тогда postfix видит в качестве ip-адресов отправителя VPN-адрес удалённого сервера. Что не позволяет нормально принимать спам и т.п. Да и других протоколов (ftp, ssh, http) это тоже слегка касается, иногда адрес отправителя важен.
Как это можно всё сделать? Везде linux >= 2.6.18. Через iptables отметить (mark) нужные пакеты и через ip route посылать их в vpn и наоборот? Задача же, наверняка, типовая.
Вопрос вдогонку. Хотелось бы вообще исходящий траффик завернуть через openvpn тоже.
Проблемы не вызывает. НО. Хотелось бы, чтоб при недоступности openvpn работало через местную сеть. Понятно, что через смену route add default gw ROUTERNAME можно добиться. Но как это хорошо сделать, опять же задача достаточно типовая?
> Вопрос вдогонку. Хотелось бы вообще исходящий траффик завернуть через openvpn тоже.
> Проблемы не вызывает. НО. Хотелось бы, чтоб при недоступности openvpn работало через
> местную сеть. Понятно, что через смену route add default gw ROUTERNAME
> можно добиться. Но как это хорошо сделать, опять же задача достаточно
> типовая?Это всё типовые задачи. Где-то в "советах" есть готовые скрипты. которые как раз делают смену "route add default gw ROUTERNAME".
> Задача. Есть сервер, на нём постфикс -- почтовый сервер мелкой
> организации. Есть удалённый сервер. На нём есть openvpn и можно делать
> что угодно, можно выделить отдельный IP с которого всё хотелось бы
> перенаправить на локальный сервер.Если есть отдельный айпи, то его можно выдать на тот конец опенвпн туннеля,
на сервере прописать маршрут к этому айпи в туннель (/sbin/ip route add 10.60.70.14 dev tap0 src 10.60.70.1 - айпишники тут можно писать "любые").
Чтобы роутер сервера слал пакеты для туннельного айпишника на сервер, надо заюзать арп-публикацию (/usr/sbin/arp -Ds $IP eth0 pub).
Таким образом реальник будет на локальном сервере.
> Хотелось бы такую маршрутизацию, чтоб всё попадающее на 25 порт
> удалённого сервера через VPN попадало на 25 порт локального сервера, к
> postfix. И наоборот тоже... И для всех остальных протоколов тоже.
> В принципе, это всё легко делается через iptables ... -j
> SNAT.Не слушайте больше этого учителя.
Это делается через DNAT. И тогда не будет кривизны типа:> Но тогда postfix видит в качестве ip-адресов отправителя VPN-адрес удалённого
> сервера. Что не позволяет нормально принимать спам и т.п. Да
> и других протоколов (ftp, ssh, http) это тоже слегка касается, иногда
> адрес отправителя важен.
> Как это можно всё сделать? Везде linux >= 2.6.18.
> Через iptables отметить (mark) нужные пакеты и через ip route посылать
> их в vpn и наоборот? Задача же, наверняка, типовая.Типовая. Разбейте задачу на мелкие этапы, и добивайтесь работоспособности по частям.
Не забывайте использовать tcpdump и смотреть в логи.
>[оверквотинг удален]
> удалённого сервера через VPN попадало на 25 порт локального сервера, к
> postfix. И наоборот тоже... И для всех остальных протоколов тоже.
> В принципе, это всё легко делается через iptables ... -j
> SNAT. Но тогда postfix видит в качестве ip-адресов отправителя VPN-адрес удалённого
> сервера. Что не позволяет нормально принимать спам и т.п. Да
> и других протоколов (ftp, ssh, http) это тоже слегка касается, иногда
> адрес отправителя важен.
> Как это можно всё сделать? Везде linux >= 2.6.18.
> Через iptables отметить (mark) нужные пакеты и через ip route посылать
> их в vpn и наоборот? Задача же, наверняка, типовая.Помимо SNAT в таком случае нужен DNAT. Задача действительно типовая и описана в руководстве по iptables, доступном на этом сайте. Читайте разделы про SNAT и DNAT.
iptables -t nat -I PREROUTING -p tcp --dport 25 -d <vpn_server_ip> -j DNAT --to-destination <lan_server_ip>
Приблизительно такого плана правило.