use*_*536 3 ftp firewall nixos vsftpd
我想在 nixos 主机上运行 ftp 服务器。我正在使用 vsftpd,不过如果可以的话可以使用其他东西。
ftp 在本地主机上工作正常,但防火墙阻止我进行远程使用。我已允许 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;
};
}
Run Code Online (Sandbox Code Playgroud)
通过上述操作,任何从脱离主机使用 ftp 的操作都会失败:
ftp> put dead.letter
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
Run Code Online (Sandbox Code Playgroud)
使用被动模式(例如, with ftp -p)似乎没有帮助:
ftp> put dead.letter
227 Entering Passive Mode (192,168,0,7,219,202).
ftp: connect: Connection timed out
Run Code Online (Sandbox Code Playgroud)
在禁用防火墙的一次性主机上进行测试
网络.防火墙.启用 = false;
允许ftp -p工作;当然,关闭防火墙并不是一个有吸引力的选择。
感谢您的帮助和指点,
在被动模式下,客户端将使用第二个连接连接到服务器,该连接用于传输“事物”(目录列表、文件)。在你的情况下:
227 Entering Passive Mode (192,168,0,7,219,202)
Run Code Online (Sandbox Code Playgroud)
服务器请求客户端在端口 219 * 256 + 202 = 56266 上连接到它。
该端口由 vsftpd 动态选择,并且未在您的防火墙中打开。您必须将 vsftpd 固定到固定端口以进行被动连接,并在防火墙中打开此连接。
vsftpd 有两个配置选项来设置它:pasv_max_port和pasv_min_port。您应该能够将它们设置为services.vsftpd.extraConfig. 您可能想打开一小部分端口并在防火墙中打开它们。
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |