【发布时间】:2019-07-15 10:52:23
【问题描述】:
我想在 nixos 主机上运行一个 ftp 服务器。我正在使用 vsftpd,但如果这会有所作为,我可以使用其他东西。
ftp 在 localhost 上运行良好,但防火墙阻止我远程使用。我已经允许 TCP 端口 21,但这还不够。
我应该如何配置防火墙以允许 ftp 连接(包括写入 ftp 服务器)?
这是我目前拥有的代码:
{
networking.firewall = { allowedTCPPorts = [ 20 21 ];
# connectionTrackingModules = [ "ftp" ];
};
services.vsftpd = {
enable = true;
# cannot chroot && write
# chrootlocalUser = true;
writeEnable = true;
localUsers = true;
userlist = [ "martyn" "cam" ];
userlistEnable = true;
};
}
根据上述情况,从主机外使用 ftp 的任何操作都会失败:
ftp> put dead.letter
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
使用被动模式(例如,ftp -p)在这里似乎没有帮助:
ftp> put dead.letter
227 Entering Passive Mode (192,168,0,7,219,202).
ftp: connect: Connection timed out
在禁用防火墙的一次性主机上进行测试
networking.firewall.enable = false;
允许ftp -p 工作;虽然当然关闭防火墙不是一个有吸引力的选择。
感谢您的帮助和指点,
【问题讨论】:
-
这里使用NixOS作为配置管理工具,如chef
-
问题是关于使用 Nix 编程语言与 Nix 模块系统对话,这是一个用于表达、组合和内省系统配置等的库。
-
感谢您的建议,我已将当前代码添加到问题中。
-
如果您的活动模式有问题,那么是本地防火墙阻止了连接。同样,不是编程问题。或者使用更好的 FTP 客户端,它支持被动模式(除了 Windows 内置的
ftp之外,都支持)。 -
很遗憾,被动模式也不起作用(上面添加的示例)