Назад | Перейти на главную страницу

IPTables, маршрутизировать определенный порт через VPN

У меня дома есть собственный почтовый сервер с динамическим IP. Динамические IP-адреса часто помещаются в черный список, поэтому в настоящее время я отправляю почту через ретранслятор своего провайдера. Я хочу изменить это на прямую отправку почты и для этой цели иметь где-нибудь vserver с фиксированным IP. Vserver подключен к моему локальному серверу через openvpn. Я хотел бы использовать туннель openvpn для маршрутизации (только) исходящей почты в «мир». Все остальные перевозки должны идти по обычному маршруту.

На vserver (общедоступный IP-адрес на eth0) работает openvpn-сервер с IP-адресом 10.20.0.1. Почтовый сервер (локальный IP 192.168.168.100) запускает клиент openvpn, IP 10.20.0.6.

IP-маршрутизация почтового сервера с установленным openvpn:

# route
default         192.168.168.1   0.0.0.0         UG    0      0        0 eth0
10.20.0.1       10.9.0.5        255.255.255.255 UGH   0      0        0 tun1
10.20.0.5       *               255.255.255.255 UH    0      0        0 tun1
192.168.168.0   *               255.255.255.0   U     0      0        0 eth0

Из своего исследования я понял, что правильный путь - это пометить исходящие почтовые пакеты и направить их на vserver. Итак, я попробовал это на почтовом сервере:

echo 201 mail.out >>/etc/iproute2/rt_tables
ip rule add fwmark 1 table mail.out
iptables -A PREROUTING -t mangle -p tcp --dport 25 -j MARK --set-mark 1
ip route add default via 10.9.0.5 dev tun1 table mail.out

(Я добавлю порт 465 позже.)

Вдобавок я включил маскировку и IP-маршрутизацию на vserver.

Тем не менее, похоже, что весь исходящий почтовый трафик по-прежнему уходит в обычном режиме. Используя tcpdump на vserver, я не вижу никаких следов исходящих подключений к порту 25. Таким образом, подключения должны быть прямыми, вне VPN. Что я упустил?