Nginx e NSD3 não iniciam na inicialização porque não podem usar o IP atribuído

2

Servidor é um Xen VPS rodando o Ubuntu 12.04 e nem o nginx nem o NSD3 aparecem após a reinicialização. A razão aparente para isso é que eles não são capazes de vincular seus endereços IP atribuídos logo após a inicialização,

de /var/log/boot.log

* Starting configure network device                                     [ OK ]
* Stopping save kernel messages                                         [ OK ]
* Starting MTA                                                          [ OK ] 
nginx: [emerg] bind() to [2a01:1b0:removed:1c9c]:80 failed (99: Cannot assign requested address)
* Starting nsd3...                                                      [ OK ] 
[...]
* Starting configure virtual network devices                            [ OK ]
* Stopping configure virtual network devices                            [ OK ]

de /var/log/nsd.log

[1351715473] nsd[956]: error: can't bind udp socket: Cannot assign requested address
[1351715473] nsd[956]: error: server initialization failed, nsd could not be started

Tudo funciona bem após alguns segundos, e tanto o nginx quanto o NSD3 podem ser iniciados.

Parece-me que o problema está na ordem de inicialização incorreta, o nginx e o NSD3 são iniciados antes que a configuração de rede possa ocorrer totalmente. Eu trabalhei em torno dele colocando

# nginx and nsd boot fix
sleep 4
/etc/init.d/nsd3 start
/etc/init.d/nginx start

em /etc/rc.local, mas essa não é uma solução adequada. Qual é o caminho certo para lidar com esse problema?

Aqui está minha configuração básica de rede, de / etc / network / interfaces auto eth0

iface eth0 inet static
  address 89.removed.121
  gateway 89.removed.1
  netmask 255.255.255.0

iface eth0 inet6 static
  up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
  up echo 0 > /proc/sys/net/ipv6/conf/default/autoconf
  netmask 64
  gateway 2a01:removed:0001
  address 2a01:removed:7c3b
  up ip addr add 2a01:removed:62bd dev eth0 preferred_lft 0
  up ip addr add 2a01:removed:ce6d dev eth0 preferred_lft 0
  up ip addr add 2a01:removed:3e13 dev eth0 preferred_lft 0
  up ip addr add 2a01:removed:1c9c dev eth0 preferred_lft 0

auto lo
iface lo inet loopback

Esse id id desajeitado está lá porque eu queria adicionar mais IPs, mas ainda usar o primeiro para todo o tráfego proveniente do servidor.

    
por Damn Terminal 01.11.2012 / 14:01

2 respostas

1

Parece que o nsd3 precisa ser iniciado após a netwok. A adição de $ network na parte Required-Start do arquivo /etc/init.d/nsd3 deve resolver o problema.

    
por 09.10.2013 / 13:55
1

A solução mais fácil para isso é não ter nginx ou nsd vinculado a um endereço IP específico, mas para ouvir qualquer endereço. Por exemplo, em nginx:

listen [::]:80;

A correção menos fácil é corrigir o script de interfaces de rede. Do jeito que você configurou agora, seus endereços IP são roteados para você, mas na verdade eles não estão vinculados à interface de forma que os programas possam escutá-los explicitamente. (Eles só recebem tráfego para eles se estiverem vinculados a qualquer endereço, conforme descrito acima.) Para fazer isso, você precisa de mais iface seções, em vez dos comandos ip route .

iface eth0 inet6 static
        address 2001:db8::1234
        netmask 64

iface eth0 inet6 static
        address 2001:db8::5678
        netmask 64

iface eth0 inet6 static
        address 2001:db8::abcd
        netmask 64
    
por 09.10.2013 / 18:11