![通过 VPN 连接到 FTP](https://linux22.com/image/692811/%E9%80%9A%E8%BF%87%20VPN%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20FTP.png)
晚上好,
我想请求大家帮忙解决一个小问题。我已经设置了 Centos 7 服务器,想为 VPN 用户添加一些管理服务。
它是一个面向 Web 的服务器,公开显示端口 80、443 和 944。使用 944 可以连接到 openvpn,它可以按预期工作。
OpenVPN 报告已为该连接分配了 IP 10.8.0.6。现在,我已将 vsftpd 服务器配置为监听 127.0.0.1:21,但我的 openvpn 客户端找不到它,我尝试了几种不同的配置,但我的网络知识不足以解决这个问题。有人能告诉我需要哪些日志、文件或其他信息来帮助我找到解决方案吗?
请注意,我了解 VPN 是一个不同的地址范围,我可以想象每当您连接到 VPN 时本地路由都会发生变化,我似乎无法弄清楚如何修复它并连接到远程服务器的本地主机。
任何见解都将不胜感激。提前致谢。为了清楚起见,我遵循了本教程来达到这一点:关联
答案1
如果您的 VSFTPD 服务器仅在 127.0.0.1 上监听(不是所有接口或特定接口),那么您将无法从 VPN 连接系统连接到它,您只能从 ftp(在本例中为 vpn)服务器本身连接到它。
您有两个选择:
1 - 设置从 VPN 客户端到 FTP 服务器的 SSH 端口转发隧道。ssh -L 2121:localhost:21 user@hostname 在此示例中,您将 FTP 客户端指向 localhost:2121,然后它将通过隧道传输到 localhost:21 上的 SSH 目标(您的 FTP 服务器)。这有点儿像黑客行为,但可以正常工作。
2a - 更改您的 FTP 服务器以监听更多接口。Openvpn 默认使用 tun0 接口,因此您可以将其配置为仅监听 openvpn 接口,但是,由于 openvpn 可以根据其运行状态删除/添加其接口,因此如果您告诉它监听的接口在启动时不可用,某些应用程序会发出抱怨。在依赖它之前,您应该测试这种情况。
2b - 或者,您可以只监听所有可用接口,但您需要确保您的 iptables 规则将拒绝任何您未明确允许的流量。您还需要一条允许来自 VPN 的流量的规则。
在没有看到确切的 iptables 规则的情况下,2a 或 2b 似乎可能会从类似这样的规则中受益:
iptables -I INPUT -m conntrack -i tun0 --ctstate NEW -m tcp -p tcp --match multiport --dports 21,22,80,443 -j ACCEPT -m comment --comment "tun0 VPN 流量"
iptables -A 输入 -j DROP
一些 iptables 注释:I 和 A 分别是“插入”和“附加”,因此插入将位于列表的开头,而附加将位于列表的末尾。我喜欢使用“多端口”和“注释”模块,以使我的 iptables 规则更简洁一些,但这些都是可选的,您可以找到其他文档,其中展示了如何使用更普通的 iptables 命令。