Windows 11 내 WSL(Windows Subsystem for Linux)2 설치 후 이 WSL2에 다시 RStudio Server를 추가로 설치하고 내·외부에서 접속 가능하도록 하는 방법이다.
참고한 링크는 다음과 같으며 번호는 설치 순서 및 참고 순서로 이해하면 된다.
- 구글 검색: windows 11 wsl 설치
- Using RStudio Server in Windows WSL2
- WSL SSH 접속 세팅하기
- WSL2, 외부 네트워크와 연결하기
- wsl2를 이용시 localhost:port로 접근 오류
- 윈도우 10 WSL 자동 실행 방법
- [Windows] *.ps1 스크립트 실행하기
1, 2번 글 순서대로 설치 후 31, 4, 5번 글을 통해 아래와 같은 내용의 파워셀 스크립트 (확장자 .ps1) 파일을 원하는 폴더에 생성하되 본인은 wsl2-connect-external.ps1 이라 명명하고 생성했다.
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if( $found ) {
$remoteport = $matches[0];
} else {
echo "The Script Exited, the ip address of WSL 2 cannot be found";
exit;
}
#[Ports]
#All the ports you want to forward separated by coma
$ports=@(8787,원하는PortNumber1,원하는PortNumber2,...);
#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";
#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";
#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";
for ( $i = 0; $i -lt $ports.length; $i++ ) {
$port = $ports[$i];
iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}
상기 파워셀 스크립트 파일 중 중요한 부분은 ‘원하는 PortNumber1, 원하는 PortNumber2 등 초록색으로 명기한 부분이여 이곳에 설정하려는 Port Number를 기입한다.
6번 글을 참고해서 자동 실행 방법을 아래와 같이 적용한다.
- ‘autostart_ubuntu.bat’ 파일을 열어 아래와 같이 입력 후 저장
@echo off
wsl -u root -- service ssh start
wsl -u root -- rstudio-server start
마지막으로 7번 글을 참고하여 Windows 기동 시마다 실행되는 WSL2의 유동 IP를 Windows가 기동되는 PC의 IP2와 자동으로 연결되도록 wsl2-connect-external.ps1 파일을 Windows 11 기동 시마다 실행하기 위해 ‘작업 스케줄러‘에 등록하는 작업을 아래와 같이 해준다.
상기 작업까지 마치면 해야 할 작업은 다 끝난 셈이다. 마지막으로 재부팅하여 잘 작동하는지를 확인하면 되는데, 본인은 아래와 같이 외부에서 ssh 또는 RStudio Server 모두 잘 접속되는 것을 아래와 같이 확인할 수 있다.
※ 공유기 내 특정 PC와 연결하고 싶을 경우에는 공유기에서 Port Forwading 설정이 필요하다는 사실은 비밀!