使用 xinetd 规则启动时,TFTP 未侦听定义的端口

使用 xinetd 规则启动时,TFTP 未侦听定义的端口

我正在关注使用 tftp 的教程:

首先,我安装所有必需的软件包:

sudo apt-get install xinetd tftpd tftp -y

接下来,创建一个配置文件:

sudo nano /etc/xinetd.d/tftp

将以下内容放入文件中。

service tftp
{
   protocol = udp
   port = 69
   socket_type = dgram
   wait = yes
   user = nobody
   server = /usr/sbin/in.tftpd
   server_args = var/lib/tftpboot -s
   disable = no
}

现在我更改目录的所有权:

sudo mkdir /var/lib/tftpboot
sudo chown -R nobody:nobody /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot

并启动TFTP服务:

sudo service xinetd stop
sudo service xinetd start

然后验证TFTP是否正常运行:

    root@ravi-Inspiron-N5010:/home/ravi# netstat -na | grep LIST | grep 69
unix  2      [ ACC ]     STREAM     LISTENING     16171    @/com/ubuntu/upstart-session/1000/1692
root@ravi-Inspiron-N5010:/home/ravi# 

netstat 的输出与教程中提到的不同:

tcp        0      0 0.0.0.0:69              0.0.0.0:*     LISTEN

答案1

TFTP 是基于 UDP 的协议,因此,您不会找到显示“LISTEN”或“LISTENING”的行。

跑步netstat -na | grep udp

看看你会得到什么。

答案2

如前所述,输出看起来足够合法。但问题是,您是否真的尝试过通过客户端访问 TFTP 服务器?唯一确定它是否在听的方法......

一件事是,如果这是 Ubuntu,则可能需要更改其中一个步骤。基本上应该是:

sudo service xinetd restart

不是

sudo service xinetd stop

sudo service xinetd start

只需要更改第 4 步,因为 xinetd 是由 upstart 产生的。你需要使用“service xinetd restart”重新启动它 – BЈовић 2013-09-04 12:14 https://askubuntu.com/questions/201505/how-do-i-install-and-run-a-tftp-server

另一种选择是简单地尝试不同的 TFTP(tftpd-hpa、atftpd 等)服务器来运行...

http://www.cyberciti.biz/faq/install-configure-tftp-server-ubuntu-debian-howto/

答案3

您没有提及您遵循了哪个教程。然而,输出似乎相当合法。 tftp 确实使用 xinetd 包装器,因此仅当存在实际连接的客户端时,您才会在 netstat 中看到连接。尝试一下,然后再次运行 netstat

netstat -tupan

确保您的防火墙允许连接到该端口:

iptables -I INPUT -s <your subnet> -p tcp --dport 69 -j ACCEPT
iptables -I INPUT -s <your subnet> -p udp --dport 69 -j ACCEPT

其中“您的子网”是 192.168.1.0/24

相关内容