read

개요

  • WSL2 VM(guset)에서 Host(WIndows10) 웹서비스, SSH 접속을 하기 위해서 Host IP가 필요
  • 노트북을 회사와 집에서 사용하고 있어 매번 Host IP를 확인하기 번거로워 shell script로 자동으로 구하는 방법 필요
  • nameserver IP 또는 windows 명령어 ipconfig.exe를 활용 ip를 구하고 환경변수로 저장하고 호스트 서비스 접속이 필요할때 해당 환경 변수를 사용
  • 아래 방법은 guest vm이 Linux 일경우만 가능함

nameserver IP

  • Linux에서 WSL 시작 될 때 설정 하는DNS 서버 설정 파일의 nameserver IP을 활용
  • Window에서 어뎁터 설정(제어판\네트워크 및 인터넷\네트워크 연결)에서 보면 vEthernet (WSL) 표시 되는 어뎁터의 IP

      > cat /etc/resolv.conf
      # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
      # [network]
      # generateResolvConf = false
      nameserver 192.168.61.129
    
  • WSL guest vm은 기본적으로 동적으로 IP 할당 받아 NAT를 통해 외부와 통신함

      > ip addr |grep eth0
      5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
          inet 192.168.61.130/28 brd 192.168.61.143 scope global eth0
    
  • /etc/resolv.conf의 nameserver 뒤의 IP를 가져와 $HOSTIP로 저장

      > export HOSTIP=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver ).+')
      > echo $HOSTIP
      192.168.61.129
    
      #perl 정규표현식이 어렵다면
      > tail -1 /etc/resolv.conf | cut -d' ' -f2
      192.168.61.129
    
    • P, –perl-regexp Interpret PATTERNS as Perl-compatible regular expressions
    • o, –only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

ipconfig.exe

  • WSL에서 windows 명령어를 사용할 수 있으므로 Linux grep 명령어로 WSL IP 획득

      > export HOSTIP=$(/mnt/c/Windows/System32/ipconfig.exe | grep -A 10 WSL | grep IPv4 | awk '{print $14; exit;}')
      ~
      > echo $HOSTIP
      192.168.61.129
    

    -A NUM, –after-context=NUM Print NUM lines of trailing context after matching lines.

    -B NUM, –before-context=NUM Print NUM lines of leading context before matching lines. -C NUM, -NUM, –context=NUM Print NUM lines of output context.

.zshrc(또는 .bashrc)

  • 로그인 시에 자동으로 실행 되도록 .zshrc(또는 .bashrc)에 추가

      export HOSTIP=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver ).+')
    
      alias gokdrvstg01='ssh vagrant@$HOSTIP -p 60001'
      alias gokdrvstg02='ssh vagrant@$HOSTIP -p 60002'
      alias gokdrvstg03='ssh vagrant@$HOSTIP -p 60003'
      alias gokdrvstg04='ssh vagrant@$HOSTIP -p 60004'
    

참고

Blog Logo

igotoo


Published

Image

igotoo

IT 관련 기술 공부/기록용 블로그

Back to Overview