[ 0. 기본적인 방식으로 ssh 연결이 안되는 이유 ]
- 리눅스 가상환경 : LAN - 정기관 서버 - Promxmox - VM
⇒ 정기관 서버 [?] - PROMX [172.30.]
- 내 PC : WIFI - 노트북
⇒ WIFI [192.168.]
⇒ 반드시 segment가 동일해야, 직접적인 통신이 가능
- 현재 정기관 서버와 내 PC는
- 물리적으로 같은 broadcast 도메인이 없음
- 논리적으로 유선 LAN과 무선 wifi로 분리
따라서 ARP[ MAC주소 ] 및 ping[ip]을 이용한 통신이 불가능 (인터넷이 된다고 해서, 직접적인 통신(SSH)가 되는 것이 아님)
상황상 정기관 서버를 wifi에 연결시키거나, 내 PC를 랜선에 연결하는 것은 불가능 = 논리적 segment 일치 포기
[ 삽질 1. Promxmox의 IP 기본 대역을 192.168로 위장 ]
⇒ 동일한 네트워크 대역이 아니면 통신 불가
나의 가정 : 현재 문제가 NAT 구간을 ARP 통신이 못넘어 가는게 문제이기 때문에
- 유선 NIC - 네트워크 노드[promx] - 외부 NAT (이 과정을 1차 연결)
- 외부 NAT - 공유기 - PC (이 과정을 2차 연결 )
⇒ 위장 시켜서 보내고, 받는 PC를 gateway처럼 쓰면 되지 않을까?
[ 1차 통신 ]
VM에서 ip_forward = 1 설정을 통해 → 포워딩 허용을 통해서 외부로 패킷을 보낼 수 있게 하고
차피 인터넷은 ens와 같은 물리포트에서 들어오니까 promx 인터페이스(vmbr1)만 192.168로 만들고
iptables -t nat -A POSTROUTING -s 172.30.0.0/16 -o ensX -j MASQUERADE
로
외부로 나갈 때 MASQUERADE 작업을 통해서 소스 IP를 호스트 IP(192.168.x.x)로 위장 시킨다.
[ 2차 통신 ]
route -p add 172.30.x.x mask 255.255.0.0 192.168.x.x
를 사용해서 정적 라운팅을 하면, 외부에서 192.168로 오는 데이터를 실제 라우팅 테이블에는 172.30으로 저장
[결과]
- 실제 사용하는 네트워크는 NIC ens이고 vmbr1이 192.168.0.30으로 설정했으므로, 해당 위치까지의 ping과 promx 내부 gateway까지의 통신 성공
- 내 PC에서도 공유기인 192.168.0.1까지 정상 통신
하지만 패킷은 Destination HOST Unreachable에러와 함께 DROP
[ 이유 분석 ]
192.168.x.x
대역을 두 군데에서 “서로 다른 네트워크” 로 쓰면
- 오히려 ARP·라우팅이 꼬여서 “Destination host unreachable” 즉 동명 IP로 인한 충돌
- 공유기, 즉 NAT로 연결된 서로 다른 192.168 서브넷 끼리는 NAT 탐색 구간이 겹치므로 직접 라우팅이 불가능
결론 : PC ↔ Proxmox 가 같은 브로드캐스트 도메인(L2) 대역에 없음 = 애초에 ARP 불가능 (편법은 안된다 …)
[ 삽질 2. VPN 이용 ]
Tailscale을 양쪽 모두에 설치 하고
- 강제로 연결 시키기
⇒ 바로 성공?!
그러나 tailscale까지 설치된 PC의 복사본으로 node를 만드니
duplicated key 문제 발생
sudo tailscale logout
sudo tailscale down
sudo rm -rf /var/lib/tailscale
⇒ hostname 및 로그인 정보를 가지는 library 파일 제거 했지만 해결 안됨
결국 그냥 지우는 것도 안돼서
[ 하드 리셋 ]으로 해결
sudo apt purge tailscale -y
sudo rm -rf /etc/default/tailscaled /var/lib/tailscale /etc/systemd/system/tailscaled.service.d
sudo apt update
sudo apt install tailscale -y
sudo systemctl start tailscaled
sudo tailscale up