Я хочу перенаправить соединение с порта 22 на мой связанный порт openvpn на 60001.
Openvpn работает на сервере 60001
server:~$ sudo netstat -apn | grep openvpn
udp 0 0 67.xx.xx.137:60001 0.0.0.0:* 4301/openvpn
Я перенаправляю с 22 порта сервера на 60001
server:~$ sudo iptables -F -t nat
server:~$ sudo iptables -A PREROUTING -t nat -p udp --dport 22 -j REDIRECT --to-ports 60001
Запускаю клиент openvpn (openvpn.conf правильный, работает с удаленный IP 22 заменен на удаленный IP 60001)
client:~$ ./openvpn openvpn.conf
Tue Apr 27 00:42:50 2010 OpenVPN 2.1.1 i686-pc-linux-gnu [SSL] [EPOLL] built on Mar 23 2010
Tue Apr 27 00:42:50 2010 UDPv4 link local (bound): [undef]:1194
Tue Apr 27 00:42:50 2010 UDPv4 link remote: 67.xx.xx.137:22
Tue Apr 27 00:42:52 2010 read UDPv4 [ECONNREFUSED]: Connection refused (code=111)
Tue Apr 27 00:42:55 2010 read UDPv4 [ECONNREFUSED]: Connection refused (code=111)
...
Ошибка подключения. Захват tcpdump на стороне сервера:
server:~$ sudo tcpdump -n udp port 21 or port 60001
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:48:32.880307 IP 84.xx.xx.27.1194 > 67.xx.xx.137.21: UDP, length 14
10:48:35.039317 IP 84.xx.xx.27.1194 > 67.xx.xx.137.21: UDP, length 14
10:48:37.196800 IP 84.xx.xx.27.1194 > 67.xx.xx.137.21: UDP, length 14
Итак, пакеты приходят, но не подключается. Openvpn.conf правильный, и клиент / сервер openvpn работают правильно, потому что если я заменю удаленный IP 22 с участием удаленный IP 60001 все работает. Что не так с этим перенаправлением?
Почему бы вам не начать с tcpdump, действительно ли пакеты вообще приходят на сервер? Возможно, что брандмауэр между ними вызывает отказ в соединении.
Ваша строка iptables мне кажется правильной.
Лучше всего использовать привилегированные порты для таких вещей, как OpenVPN, иначе непривилегированный пользователь потенциально может использовать этот порт и вызвать некоторую неприятность.
nc -u 67.xx.xx.137 22
и введите ввод, чтобы протестировать без openvpn, чтобы убедиться, что он делает то, что вы думаете. Обычно, если порт закрывается после вашей первой строки ввода, он закрывается, а если он открыт, он будет продолжать принимать. Конечно, он может закрыть его, потому что вы отправили ему мусор, но это будет отображаться в журналах OpenVPN, если это так.