nós de sshlogin multpile paralelos GNU por trás do NAT

1

É possível ter vários nós remotos atrás de um NAT com o GNU paralelo?

Suponha que alguns dos clusters paralelos GNU existam atrás de um NAT (que pode ou não ser acessível somente através de um único endereço IPv4 através de um ISP operando somente IPv4) em relação ao nó mestre. ou seja, mais de um nó de PC com seu próprio endereço IP de sub-rede existente em alguma sub-rede diferente daquela que hospeda o nó mestre.

Existe alguma maneira de o GNU-paralelo distribuir o trabalho através do NAT para todos esses nós?

Depois de algumas pesquisas e reflexões sobre o problema, incluindo uma relacionada pergunta

O único meio em que consigo pensar seria definir manualmente uma porta diferente para cada nó usando o sinalizador -p descrito no manual e, em seguida, adicione manualmente uma regra de encaminhamento de porta no NAT para cada nó: porta

Existe algum "truque" no gnu-paralelo, onde os trabalhos poderiam ser passados para um nó por trás do NAT, e então distribuídos para outros nós em sua sub-rede?

Ou talvez exista um método pelo qual os nós escravos possam passar uma mensagem por meio de um https POST com uma tarefa cron e, de alguma forma, gerar e manter uma conexão estabelecida em uma porta pública? Semelhante a como se pode obter chaves públicas como descrito em esta questão (esta ideia está definitivamente fora do meu entendimento do TCP / IPTABLES, então eu percebo que ele pode ser fundamentalmente defeituoso)

Uma solução que poderia ser implementada somente dentro do nó mestre e dos nós escravos seria preferível a uma em que as entradas de NAT fossem necessárias.

    
por Mr Purple 28.09.2015 / 01:15

1 resposta

1

Existem várias soluções.

Os trabalhadores estão por trás do NAT. Nenhum acesso a um host de salto. Sem acesso ao firewall.

Para isso, você precisa de algum tipo de VPN que possa atravessar o firewall. Um serviço TOR escondido para a porta 22 nos trabalhadores pode ser usado aqui. Se todos os trabalhadores estiverem habilitados para TOR:

parallel --ssh 'torsocks ssh' -S zij4uclus7xhwlhz.onion,isj4uclus7xhwlhz.onion,lzw4uclus7xhwlhz.onion echo ::: 1

Se apenas alguns forem:

parallel -S 'torsocks ssh zij4uclus7xhwlhz.onion,torsocks ssh isj4uclus7xhwlhz.onion,torsocks ssh lzw4uclus7xhwlhz.onion' echo ::: 1

Os trabalhadores estão por trás do NAT. Nenhum acesso a um host de salto. Acesso ao firewall.

Se você puder encaminhar portas, de modo que a porta 2001 seja a porta 22 no host 1, a porta 2002 será a porta 22 no host 2, 2003 será o host 3 ... e você poderá usar -p:

parallel -S 'ssh -p 2001 firewall,ssh -p 2002 firewall,ssh -p 2003 firewall' echo ::: 1

Você pode colocar isso em .ssh/config :

Host host1.v
  Port 2001
Host host2.v
  Port 2002
Host host3.v
  Port 2003

Host *.v
  Hostname firewall

E simplesmente use host [1-3] .v como hosts normais:

parallel -S host1.v,host2.v,host3.v echo ::: 1

Os trabalhadores estão por trás do NAT. Acesso a um host de salto.

Se você tiver acesso a um host de salto a partir do qual possa alcançar os trabalhadores, o óbvio seria:

parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK

Mas este não funciona porque o comando é dequoted por ssh duas vezes onde, como o GNU Parallel só espera que seja dequoted uma vez.

Então, use .ssh/config novamente:

Host host1 host2 host3
  ProxyCommand ssh jump.host.domain nc -w 1 %h 22

Requer que nc (netcat) seja instalado no jumphost.

    
por 28.09.2015 / 09:35