NAT 뒤의 GNU 병렬 다중 파일 SSHlogin 노드

NAT 뒤의 GNU 병렬 다중 파일 SSHlogin 노드

GNU 병렬 NAT 뒤에 여러 개의 원격 노드를 가질 수 있습니까?

GNU 병렬 클러스터 중 일부가 마스터 노드를 기준으로 NAT(IPv4만 운영하는 ISP를 통해 단일 IPv4 주소를 통해서만 액세스할 수 있거나 액세스할 수 없는) 뒤에 존재한다고 가정합니다. 즉, 마스터 노드를 호스팅하는 서브넷이 아닌 다른 서브넷에 존재하는 자체 서브넷 IP 주소를 가진 두 개 이상의 PC 노드입니다.

GNU 병렬이 NAT를 통해 모든 노드에 작업을 배포할 수 있는 방법이 있습니까?

이 문제를 포함하여 문제에 대해 조사하고 생각한 후다소 관련된 질문

내가 생각할 수 있는 유일한 방법은 다음에 설명된 -p 플래그를 사용하여 각 노드에 대해 다른 포트를 수동으로 정의하는 것입니다.수동그런 다음 각 노드에 대해 NAT에 포트 전달 규칙을 수동으로 추가합니다.

작업이 NAT 뒤의 한 노드로 전달된 다음 그곳에서 해당 서브넷의 다른 노드로 전달될 수 있는 gnu-parallel의 "트릭"이 있습니까?

아니면 슬레이브 노드가 cron 작업을 사용하여 https POST를 통해 메시지를 전달하고 어떻게든 공용 포트를 통해 설정된 연결을 생성하고 유지할 수 있는 방법이 있을까요? 에 설명된 대로 공개 키를 얻는 방법과 유사합니다.이 질문(이 아이디어는 확실히 TCP/IPTABLES에 대한 나의 이해 범위를 벗어나므로 근본적으로 결함이 있을 수 있다는 것을 알고 있습니다.)

NAT 항목이 필요한 솔루션보다 마스터 노드와 슬레이브 노드 내에서만 구현될 수 있는 솔루션이 더 좋습니다.

답변1

몇 가지 솔루션이 있습니다.

작업자는 NAT 뒤에 있습니다. 점프 호스트에 액세스할 수 없습니다. 방화벽에 접근할 수 없습니다.

이를 위해서는 방화벽을 통과할 수 있는 일종의 VPN이 필요합니다. 작업자의 포트 22에 대한 TOR 숨겨진 서비스를 여기에서 사용할 수 있습니다. 모든 작업자가 TOR를 사용하는 경우:

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

일부만 다음과 같은 경우:

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

작업자는 NAT 뒤에 있습니다. 점프 호스트에 액세스할 수 없습니다. 방화벽에 대한 액세스.

포트를 전달할 수 있으면 포트 2001은 호스트 1의 포트 22이고, 포트 2002는 호스트 2의 포트 22이고, 2003은 호스트 3입니다. 그런 다음 -p를 사용할 수 있습니다.

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

이것을 다음 위치에 넣을 수 있습니다 .ssh/config:

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

Host *.v
  Hostname firewall

그런 다음 일반 호스트로 간단히 host[1-3].v를 사용하십시오.

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

작업자는 NAT 뒤에 있습니다. 점프 호스트에 액세스합니다.

워커에 접근할 수 있는 점프 호스트에 액세스할 수 있다면 다음과 같은 점은 분명합니다.

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

하지만 이것은작동하지 않습니다왜냐하면 GNU Parallel에서는 명령이 한 번만 인용 해제될 것으로 예상하는 반면 명령은 ssh에 의해 두 번 인용 해제되기 때문입니다.

대신에 .ssh/config다시 사용하세요:

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

ncJumphost에 (netcat)을 설치 해야 합니다 .

관련 정보