ASHD Dev_Blog

Alpha 서버 [삽질 1 : SSH]

이재룡
이재룡Jun 30, 2025

[ 0. 기본적인 방식으로 ssh 연결이 안되는 이유 ]

  • 리눅스 가상환경 : LAN - 정기관 서버 - Promxmox - VM

    ⇒ 정기관 서버 [?] - PROMX [172.30.]

  • 내 PC : WIFI - 노트북

    ⇒ WIFI [192.168.]

👉
Segment : 물리적, 논리적으로 분리된 네트워크 구역

⇒ 반드시 segment가 동일해야, 직접적인 통신이 가능

  • 현재 정기관 서버와 내 PC는
    • 물리적으로 같은 broadcast 도메인이 없음
    • 논리적으로 유선 LAN과 무선 wifi로 분리

따라서 ARP[ MAC주소 ] 및 ping[ip]을 이용한 통신이 불가능 (인터넷이 된다고 해서, 직접적인 통신(SSH)가 되는 것이 아님)

상황상 정기관 서버를 wifi에 연결시키거나, 내 PC를 랜선에 연결하는 것은 불가능 = 논리적 segment 일치 포기

[ 삽질 1. Promxmox의 IP 기본 대역을 192.168로 위장 ]

👉
ARP : IP로 MAC주소를 알아내기 위한 통신 프로토콜

동일한 네트워크 대역이 아니면 통신 불가

나의 가정 : 현재 문제가 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
go

⇒ 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
go