Unix & Linux 또는 네트워크 엔지니어링에 이 질문을 해야 할지 잘 모르겠습니다.
이것은 실제 장면입니다.
[호스트 1]----[캐리어 등급 NAT]---->AWS<----[캐리어 등급 NAT]----[호스트 2]
사회자 1그리고호스트 2역방향 SSH(autossh)를 통해 AWS Box에 연결하면 필요한 경우 셸 연결이 가능하고 필요한 경우 다른 포트를 노출할 수 있습니다.
호스트 2백업 덤프를 다음 위치로 푸시합니다.사회자 1SCP를 정기적으로 사용하세요. 실제로는 있습니다호스트 2×10데이터 덤프 상자를 밀어 넣으세요. 가장 가까운 AWS 위치는 상자 위치에서 멀리 떨어져 있으므로 지연 시간이 높습니다.
상자 사이에 SSH 터널을 설정하기 위해 AWS 상자를 랑데부 지점으로 사용할 수 있습니까? 저는 IPv6 터널링 프록시에 대해 알고 있지만 해당 지역의 ISP는 아직 이를 채택하지 않았습니다(20년이 너무 늦었습니다... 젠장!). 저는 다음을 기반으로 솔루션을 모색하고 있습니다.
- TCP/UDP 홀 펀칭(실제 구현)
- AWS의 UPnP/NAT-PMP 서비스
- Chrome 원격 데스크톱과 같은 도구를 사용하여 해킹하여 VNC 대신 SSH 포트를 노출합니다.
- 기타 라우터 서비스.
- 기타 실제적인 방법.
상자는 대부분 CentOS 6/7을 실행합니다.
답변1
그러나 이것이 꼭 필요한 것은 아닙니다. iptables를 사용하여 호스트1 또는 호스트2 역방향 로컬 포트를 외부 포트로 노출할 수 있습니다. SSH 역방향 터널로 host2를 연결한다고 가정합니다.
user2@host2 $ ssh -R 9999:localhost:22 [email protected]
이제 수신 포트 aws.com:9999를 aws[localport:9999]로 전달할 수 있습니다. AWS 서버에서:
[email protected] # iptables -t nat -I PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
이제 다음을 통해 호스트2에서 호스트1로 연결할 수 있습니다.
user1@host1 $ ssh [email protected] -p 9999
빙고. 다음과 같이 연결합니다.
[Host1] --> [aws:port9999] --> [aws의 역방향 터널: 127.0.0.1:9999] --> [Host2]
이 연결이 더 이상 사용되지 않으면 iptable 레코드를 삭제해야 합니다.
[email protected] # iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
이 솔루션의 단점은 호스트2가 외부 포트 9999를 통해 모든 사람에게 노출된다는 것입니다. 로그인하려면 비밀번호를 입력해야 하는데 비밀번호가 노출되어 있습니다.
UPD: 로컬 전달을 활성화해야 할 수도 있습니다.
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet
또는 모든 인터페이스에 대해 활성화하는 대신 수익 인터페이스에서만 활성화하십시오.
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_local