Вот моя установка: у меня есть сервер MYSRV в моей локальной сети 192.168.1.x, его IP-адрес 192.168.1.110. Он также запускает клиент openvpn для подключения к серверу openvpn REMOTESRV. 10.0.0.x - это частная локальная сеть openvpn. На MYSRV у меня работают dovecot и mysql, и мне нужен доступ к нему извне.
MYSRV правильно подключается к серверу openvpn, и я получаю интерфейс tun и следующую таблицу маршрутов:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.94.109.129 128.0.0.0 UG 0 0 0 tun0
default gateway 0.0.0.0 UG 0 0 0 eth0
128.0.0.0 172.94.109.129 128.0.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 1000 0 0 lo
172.94.109.4 gateway 255.255.255.255 UGH 0 0 0 eth0
172.94.109.128 * 255.255.255.192 U 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
Когда клиент сервера openvpn на MYSRV остановлен, я могу получить доступ извне к портам 143/993/3306 благодаря переадресации портов на маршрутизаторе ADSL и полному доменному имени маршрутизатора (скажем, myserver.from-outside.com). Конечно, я также могу получить доступ к этим портам из локальной сети. Однако, когда клиент сервера openvpn на MYSRV запускается, если я
nmap -sS myserver.from-outside.com
все порты фильтруются, но некоторые:
Not shown: 989 filtered ports
PORT STATE SERVICE
25/tcp open smtp
53/tcp closed domain
80/tcp open http
113/tcp closed ident
135/tcp closed msrpc
139/tcp closed netbios-ssn
443/tcp open https
445/tcp closed microsoft-ds
465/tcp open smtps
587/tcp open submission
631/tcp open ipp
То же самое из локальной сети показывает, что порты 143/993/3306 действительно доступны:
Not shown: 983 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
24/tcp open priv-mail
53/tcp open domain
81/tcp open hosts2-ns
111/tcp open rpcbind
139/tcp open netbios-ssn
143/tcp open imap
444/tcp open snpp
445/tcp open microsoft-ds
993/tcp open imaps
2049/tcp open nfs
3306/tcp open mysql
5050/tcp open mmcc
9091/tcp open xmltec-xmlmail
10000/tcp open snet-sensor-mgmt
12345/tcp open netbus
Похоже, есть проблема с портами фильтрации openvpn. Я попробовал несколько уловок с использованием iptables, например:
iptables -t nat -A PREROUTING -p tcp --dport 143 -j DNAT --to 10.0.0.1
но ничего не работало.
Конфигурация клиента приведена ниже (ключи встроены и здесь не показаны).
client
;explicit-exit-notify
proto tcp
remote at2-ovpn-tcp.pointtoserver.com 80
dev tun
;up /etc/openvpn/scripts/up.sh.bak
;down /etc/openvpn/scripts/down.sh.bak
auth-user-pass pass
persist-key
persist-tun
nobind
;block-outside-dns
key-direction 1
remote-cert-tls server
cipher AES-256-CBC
route-method exe
route-delay 0
route 0.0.0.0 0.0.0.0
script-security 2client
;explicit-exit-notify
proto tcp
remote at2-ovpn-tcp.pointtoserver.com 80
dev tun
;up /etc/openvpn/scripts/up.sh.bak
;down /etc/openvpn/scripts/down.sh.bak
auth-user-pass pass
persist-key
persist-tun
nobind
;block-outside-dns
key-direction 1
remote-cert-tls server
cipher AES-256-CBC
route-method exe
route-delay 0
route 0.0.0.0 0.0.0.0
script-security 2
Не могли бы вы мне в этом помочь? Можно ли ограничить применение openvpn к определенным приложениям, чтобы некоторый трафик не учитывался в обоих направлениях (внутри / снаружи), или нет? Если нет, я думаю, необходимо добавить правила переадресации портов iptables, связанные с установкой openvpn? Какие правила?