Задача. Есть сервер, на нём постфикс — почтовый сервер мелкой организации. Есть удалённый сервер. На нём есть 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 можно добиться. Но как это хорошо сделать, опять же задача достаточно типовая?