Iptables REDIRECT + openvpn 问题

Iptables REDIRECT + openvpn 问题

我想将端口 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一切正常。这个重定向有什么问题?

答案1

为什么不先用 tcpdump,数据包是否确实到达了服务器?中间的防火墙可能导致连接被拒绝。

您的 iptables 行对我来说看起来是正确的。

最好对 OpenVPN 之类的使用特权端口,否则非特权用户可能会使用该端口并造成一些不良后果。

nc-u 67.xx.xx.137 22

并输入一些输入,在没有 openvpn 的情况下进行测试,以确保它正在执行您认为它在执行的操作。通常,如果端口在您输入第一行后关闭,它将关闭,而如果它打开,它将继续接受。当然,它可能会因为您发送了垃圾信息而关闭它,但如果是这种情况,它将出现在 OpenVPN 日志中。

相关内容