AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 494699
Accepted
Søren Sjøstrøm
Søren Sjøstrøm
Asked: 2019-01-16 15:14:15 +0800 CST2019-01-16 15:14:15 +0800 CST 2019-01-16 15:14:15 +0800 CST

Problema de tempo limite de TFTP durante a inicialização PXE

  • 772

Ao configurar um servidor de inicialização PXE em uma máquina CentOS 7, encontrei um problema estranho com o TFTP. Não consigo recuperar nenhum arquivo do servidor TFTP sem encontrar um problema de tempo limite. O processo de inicialização chega tão longe que recebo corretamente um endereço IP e um nome de arquivo do servidor DHCP. No entanto, quando os arquivos de inicialização devem ser recuperados do servidor TFTP, uma mensagem "TFTP open timeout" é exibida. Se eu fizer manualmente uma conexão TFTP com o servidor PXE a partir de um computador local, terei acesso imediato ao servidor. Mas se eu tentar com um comando "get pxelinux.0", recebo outra mensagem de tempo limite. Meu firewall está configurado corretamente e também não faz diferença se eu desligar completamente o firewall. O SeLinux também está desabilitado. Se eu fizer um tcpdump na porta 69 recebo a seguinte mensagem:

12:34:33.477401 IP 172.16.1.202.ah-esp-encap > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
12:34:35.481131 IP 172.16.1.202.acp-port > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
12:34:39.490793 IP 172.16.1.202.msync > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
12:34:45.477712 IP 172.16.1.202.gxs-data-port > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
12:34:53.441801 IP 172.16.1.202.vrtl-vmf-sa > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
12:35:03.384065 IP 172.16.1.202.newlixengine > tools.dmz.tuxme.dk.tftp:  32 RRQ "pxelinux.0" octet blksize 1456
12:35:39.414843 IP 172.16.1.202.newlixconfig > tools.dmz.tuxme.dk.tftp:  32 RRQ "pxelinux.0" octet blksize 1456
12:36:51.422568 IP 172.16.1.202.tsrmagt > tools.dmz.tuxme.dk.tftp:  32 RRQ "pxelinux.0" octet blksize 1456
12:38:39.406732 IP 172.16.1.202.tpcsrvr > tools.dmz.tuxme.dk.tftp:  32 RRQ "pxelinux.0" octet blksize 1456

Infelizmente, o log do sistema não mostra nada útil:

Jan 15 13:13:19 tools xinetd[6993]: EXIT: tftp status=67 pid=7954 duration=0(sec)
Jan 15 13:13:21 tools xinetd[6993]: START: tftp pid=7955 from=172.16.1.202
Jan 15 13:13:21 tools in.tftpd[7955]: no user tftp: Success
Jan 15 13:13:21 tools xinetd[6993]: EXIT: tftp status=67 pid=7955 duration=0(sec)
Jan 15 13:13:25 tools xinetd[6993]: START: tftp pid=7956 from=172.16.1.202
Jan 15 13:13:25 tools in.tftpd[7956]: no user tftp: Success
Jan 15 13:13:25 tools xinetd[6993]: EXIT: tftp status=67 pid=7956 duration=0(sec)
Jan 15 13:13:31 tools xinetd[6993]: START: tftp pid=7957 from=172.16.1.202
Jan 15 13:13:31 tools in.tftpd[7957]: no user tftp: Success

Os direitos para o diretório /var/lib/tftpboot são 0755.

Aqui está meu arquivo de configuração:

/etc/xinetd.d/tftp:

service tftp
socket_type             = dgram
protocol                = udp
wait                    = yes
user                    = root
server                  = /usr/sbin/in.tftpd
server_args             = -c -v -u tftp -p -U 117 -s /var/lib/tftpboot
disable                 = no
per_source              = 11
cps                     = 100 2
flags                   = IPv4
linux networking
  • 2 2 respostas
  • 6577 Views

2 respostas

  • Voted
  1. Best Answer
    telcoM
    2019-01-16T16:59:07+08:002019-01-16T16:59:07+08:00

    Parece que a tcpdumpsaída contém apenas solicitações e nenhuma resposta. Se isso é o que está realmente acontecendo, um erro de tempo limite deve ser esperado.

    Na server_argslinha de sua configuração TFTP para xinetd, você tem -u tftp. Isso diz in.tftpdpara executar como usuário tftp. À luz disso, esta mensagem registrada por in.tftpdpode ser importante:

    Jan 15 13:13:21 tools in.tftpd[7955]: no user tftp: Success
    

    Ele diz "sem usuário tftp". A tftpconta de usuário realmente existe em seu sistema?

    A Successmensagem no final da mensagem de log requer um pouco de conhecimento de programação C para entender. É provável que venha de uma função minimalista de tratamento de erros que provavelmente apenas chama perror()e faz qualquer limpeza necessária antes de sair.

    A perror()função recebe uma mensagem de seu chamador e, em seguida, anexa a ela uma mensagem de erro padrão correspondente ao valor atual da errnovariável. Ele foi projetado para ser usado em situações em que uma chamada de sistema anterior falhou; a mensagem personalizada deve descrever o que o programa estava fazendo quando o erro foi encontrado e a mensagem padrão deve esclarecer o tipo de problema encontrado.

    Mas se o programador usou sua função de tratamento de erros para relatar um erro que foi detectado de outra forma, a parte da mensagem de erro padrão lerá Success.

    Meu palpite é que o in.tftpdprocesso é iniciado por xinetd, se prepara para mudar para user tftpe descobre que esse usuário não existe. Assim, o in.tftpdprocesso gera essa mensagem de log e morre sem enviar nada para o cliente.

    A mensagem concisa com um enganoso "Sucesso" no final é um exemplo do velho conceito de "se sua única ferramenta é um martelo, você tende a tratar tudo como pregos". Nesse caso, o programador provavelmente usou sua única função de tratamento de erros em uma situação na qual seu formato de saída não se encaixa.

    Além disso, esses pedidos parecem um pouco estranhos:

    12:34:33.477401 IP 172.16.1.202.ah-esp-encap > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
    12:34:35.481131 IP 172.16.1.202.acp-port > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
    12:34:39.490793 IP 172.16.1.202.msync > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
    12:34:45.477712 IP 172.16.1.202.gxs-data-port > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
    12:34:53.441801 IP 172.16.1.202.vrtl-vmf-sa > tools.dmz.tuxme.dk.tftp:  27 RRQ "pxelinux.0" octet tsize 0
    

    O tsize 0indica que o cliente está esperando uma transferência TFTP com um tamanho de arquivo de 0 bytes no total.

    Você está ciente de que a especificação UEFI PXE, como existia na UEFI versão 2.3, exige que o servidor DHCP informe ao cliente PXE o tamanho do arquivo que deve carregar? Se você estiver usando o servidor DHCP ISC, a opção necessária pode ser especificada como

    option boot-size <size value>; 
    

    O <size value>deve ser o tamanho do arquivo de inicialização em bytes dividido por 512 e arredondado para cima.

    • 3
  2. Алексей
    2022-03-31T04:54:58+08:002022-03-31T04:54:58+08:00

    Se eu entendi o problema corretamente, encontrei um semelhante.

    O servidor PXE funcionou sem problemas e o tftp caiu com "PXE-E32: TFTP Open timeout"

    A solução após uma longa pesquisa foi alterar a configuração do tftp /etc/default/tftpd:

    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/srv/tftp"
    TFTP_ADDRESS="0.0.0.0:69"
    TFTP_OPTIONS="--secure -l -v -r blksize"
    

    Eu adicionei "-r blksize" às ​​opções do tftp.

    • -1

relate perguntas

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Roteador estranho funciona com centos 6 [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve