Buttercoco

반응형

안녕하세요, 코코넛입니다~!

이번에는 제가 애용하고 있는 윈도우 OS의 WSL2(Windows Subsystem for Linux version 2)에 관해

  1. 포트포워딩
  2. vmmem 이슈 => wsl2 에 자원 할당
  3. 윈도우 시작 시에 wsl2 내에서 원하는 bashscript 실행

이렇게 세가지를 다뤄 보도록 하겠습니다.


우선 1번 포트포워딩인데요, wsl2 내에서 외부로 포트포워딩하고 싶은 경우 방화벽 설정을 건드려 줘야 합니다.

아래의 스크립트를 원하는 file 이름으로 확장자명은 .ps1 형식으로 원하는 경로에 저장을 합니다. (예: port_fowarding.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 comma
$ports_tcp=@(22,80,443,3306);

#[Static ip] #You can change the addr to your ip config to listen to a specific address
$addr=’0.0.0.0′;
$ports_a_tcp = $ports_tcp -join “,”;

#Remove Firewall Exception Rules
iex “Remove-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock_TCP’ “;

#adding Exception Rules for inbound and outbound Rules
iex “New-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock_TCP’ -Direction Outbound -LocalPort $ports_a_tcp -Action Allow -Protocol TCP”;
iex “New-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock_TCP’ -Direction Inbound -LocalPort $ports_a_tcp -Action Allow -Protocol TCP”;

for( $i = 0; $i -lt $ports_tcp.length; $i++ ){
$port = $ports_tcp[$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”;
}

그리고 윈도우의 ‘작업 스케쥴러’ 라고 검색해서 작업 스케쥴러 상에서 작업 만들기를 통해서 이 파일을 윈도우가 시작할 때 실행되도록 할텐데요,

트리거 => 시스템 시작 시 로 설정을 해줍니다.

동작탭에서

프로그램 / 스크립트 => C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

시작 위치 => 위의 스크립트가 존재하는 폴더 Path (예: C:\Users\test\wsl2_config)

인수 추가 => -ExecutionPolicy Bypass -File .\port_fowarding.ps1

라고 설정해 줍니다.

그리고 저장을 해줍니다.

여기까지 하면 포트포워딩까지는 됩니다.


두번째는 윈도우 cpu, memory 등을 wsl2에 임의로 할당하는 설정입니다.

wsl2에 임의로 자원을 할당하지 않으면 윈도우에서 사용하는 메모리를

버퍼 상태로 할당하여 윈도우에서 필요할 때 메모리를 사용을 못할 수 있습니다.

그래서 자원을 임의로 할당해 주면 이런 불상사는 일어나지 않겠죠?

아래의 스크립트를 C:\Users\사용자명\.wslconfig 로 저장합니다.

꼭 사용자 홈 디렉터리에 .wslconfig 의 이름으로 저장이 되어야 윈도우에서 인식할 수 있습니다.

[wsl2] memory=4GB
processors=2
swap=2GB
localhostForwarding=true


 

memory는 4GB를 할당, cpu 프로세서는 2개, 스왑메모리는 2GB를 할당하는 옵션입니다.

memory를 할당하지 않을 경우 윈도우 메모리 자원을 wsl2가 점유하고 있을 수 있으니 주의바랍니다.


 

마지막으로 윈도우가 구동되면서 작업 스케쥴러를 통해서 wsl2내의 bashscript를 구동시켜 원하는 프로세스를 실행시킬 수 있는 설정입니다.

아래의 스크립트를 파일로 임의의 이름으로 확장자는 .bat 형식으로 원하는 경로에 저장을 해줍니다. (예: init_system.bat)

C:\Windows\System32\bash.exe -c “/home/wsl2유저명/init_system.sh”

 

그리고 저장한 파일을 또 ‘작업 스케쥴러’ 에 추가해 줍니다.

트리거 => 시스템 시작 시 로 설정을 해줍니다.

이번에는 동작탭에서

프로그램 / 스크립트 => C:\Users\test\wsl2_config\init_system.bat

정도로 설정을 해주면 됩니다. 이 설정은 /home/wsl2유저명/init_system.sh 를 윈도우 시작 시에 실행하게 됩니다.

용도의 예로는 crontab 이나 webserver 를 구동시키는 정도를 나열해 볼 수 있겠습니다.

반응형

안녕하세요 이번에는 제가 WebRTC 를 이용해 무언가?를 만드는 과정에서

peer 간에 네트워크 상에서 연결을 중계시켜주는 역할을 하는 turnserver를

구축하여 동작하는 것까지 포스팅을 해보았습니다.

우분투 환경 기준으로 작성을 하였습니다.

  1. coturn을 설치합니다. (sudo apt install coturn)
  2. /etc/turnserver.conf  파일을 수정하여 서버환경을 셋팅합니다.
  3. turnadmin으로 사용자 계정을 추가해 줍니다.
  4. coturn을 서버상에서 실행합니다. 끝~

turnserver.conf 는 제가 셋팅한 파일의 내용을 올리겠습니다. (네트워크 환경에 따라 조금씩 수정하셔야 합니다.)

아래의 설정을 하기 전에 포트포워딩 또는 방화벽을 통해 tcp 3478 & tcp 5349 포트를 허용해 주셔야 합니다.

# turnserver의 포트입니다.
listening-port=3478
# tls 포트입니다.
tls-listening-port=5349
# 외부IP를 넣어줍니다.(공유기 사용시 WAN상의 외부IP를 넣어줍니다.)
external-ip=123.123.126.123
# 로그를 뽑을 수 있으니 주석을 해제하였습니다.
verbose
# 이것도 주석해제
fingerprint
# 인증방식 주석해제
lt-cred-mech
# turnserver 도메인 네임입니다.
server-name=test.com
# 릴름은 원하는 네임명으로 해줍니다.
realm=testname

위의 /etc/turnserver.conf 를 수정한 뒤에 저장을 해줍니다.

그 다음에는 turnadmin 을 통해 turnserver를 사용할 수 있는 계정을 생성해 줍니다.

turnadmin -a -u 계정이름 -p 계정패스워드 -r 릴름명

위의 방식으로 turnadmin을 통해 계정을 추가하면 거의 끝!

마지막으로 turnserver 실행~

sudo service coturn start

turnserver에 유저가 접속하여 중계 상태가 되면

/var/log/turn_14545_2019-01-27.log 같은 형식을 log 파일의 용량이 늘어나면서 로그가 쌓이게 됩니다.

여기까지 우분투서버에 turn 서버 설치하기 였습니다.

끝~!


반응형

안녕하세요 이번에는 터미널로 간단히 wol을 사용하는 방법을 볼까 합니다.

 

네트워크 환경 - wol 패킷을 보내는 리눅스 시스템과 wol 패킷을 받아 시동이 되는 리눅스 시스템이 같은 WAN 네트워크 내에 존재

 

먼저. 설치를 해야 합니다.

간단한 명령어

case 1. 우분투 – sudo apt-get install wakeonlan

case 2. 맥 – brew install wakeonlan

case 3. 그 외 기타 – 소스를 다운로드하여 빌드해야 합니다. ㅜㅜ

 

다음으로 사용해 봅시다.

샘플 명령어 – wakeonlan 2d:3f:3a:23:1c:1b

결과 – Sending magic packet to 255.255.255.255:9 with 2d:3f:3a:23:1c:1b

위의 스크린샷은 명령 후에 결과 로그를 캡쳐한 것입니다.

부족한 제글 읽어 주셔서 감사합니다.


반응형

요즘에 잘 사용은 안하지만 어쩌다가? 사용할 수 있는 포트란 컴파일 및 사용 방법입니다.

우선 https://gcc.gnu.org/wiki/GFortranBinaries 여기에 접속해서 자신의 컴퓨터에 맞는

포트란 컴파일러를 다운 받고 설치를 합니다.

그리고 컴파일 후 사용법은

  1. cd /path/to/file
  2. gfortran -o program my_program.f
  3. ./program

이런식으로 사용할 수 있습니다.