본문 바로가기

Ubuntu/Basic

[Ubuntu] Ubuntu server OS + 인터넷 드라이버 설치 + DDNS + Wireguard VPN 홈 서버 구축하기

 

* 목차

 - Intro

 - Environment

 - Settings

 1. Ubuntu Server OS USB Installer 준비

 2. Install Ubuntu Server OS

 3. Internet 연결을 위한 Driver 설치

 4. iptime으로 WireGuard vpn 설정

 - 마치며

 

 

 


 

Intro

이번 글은 DDNS + VPN을 통해서 나만 접속 가능한 Ubuntu Server OS 구축 에 대한 글입니다. 실제로 구축하면서 얻었던 진행사항들의 이력을 정리할 겸 공유하고자 이 글을 작성합니다.

 


Environment

 

이 글에서 사용된 Hardward는 아래와 같습니다.

 

  1. CPU : 9700x Ryzen
  2. Mainboard : X870E aorus pro ice (Gigabyte)
  3. RAN Card : Realtek RTL8125 (Mainboard에 내장)
  4. USB storage 32GB (Ubuntu server USB installer와 LAN Card driver를 설치하기 위함입니다)
  5. VPN, DDNS가 가능한 iptime 공유기 (AX6008M)
  6. ISO image나 .deb같은 파일을 받아줄 용도의 인터넷 잘되는 Windows PC
  7. KT, SK, LGU+등 유선 인터넷이 되는 집...

 

개인적으로 어느곳에서나 접속이 용이한 Linux server가 고파서 언제 구축하나 고민만 하고 있었습니다. 마침 최근에 좋은 기회가 와서 Hardware를 빠르게 하나 장만했습니다. 하지만 Hardward를 빠르게 갖춘 것과는 다르게 막상 구축을 하려 하자 걱정이 생기기 시작했습니다. 홈 서버를 운영하게 되면 아무래도 보안의 위협에 대해서 신경을 많이 쓰게 되더라구요. 그래서 저는 아래와 같은 조건으로 보안환경을 구성하려 합니다.

 

  1. 고정ip는 추가 가격(월1만원 이상) 이 들기 때문에 iptime으로 DDNS로 외부에서 쉽게 접속이 가능하도록 함. 
  2. 홈 서버는 Brute force attack에는 공격당하지 않도록 VPN을 통해서만 통신하도록 설정

 

이 작업들을 진행하면서 크게 고생했던 부분은 아래와 같습니다.

 

  1. Booting (처음에 booting이 안되어서 UEFI 설정을 건드려야 했습니다.)
  2. LAN Card Driver 설치로 인터넷 접속하기(기본 Ubuntu에는 network driver뿐만 아니라. make, gcc, build-essential, 그외 기타 dependancy package들이 없습니다. 전부 설치해야 합니다.)
  3. VPN 활성화를 위해 Wireguard server, client 설정(iptime, Ubuntu server, 외부에서 접속할 client 3개를 전부 설정해야 합니다. 저는 iphone을 외부에서 접속할 client선택했습니다. 실제로는 windows, macbook에서도 접속해서 사용하고 있습니다.)

 

이 3가지에 대해서 어떻게 진행했었는지 실제 경험을 토대로 작성해 보았습니다. 그럼 시작합니다.

 

 

 


Settings

1. Ubuntu Server OS USB Installer 준비

먼저 Ubuntu server ISO image를 받아줍시다. 공식 페이지는 아래와 같습니다.

https://ubuntu.com/download/server

 

Get Ubuntu Server | Download | Ubuntu

Get Ubuntu Server one of three ways; by using Multipass on your desktop, using MAAS to provision machines in your data centre or installing it directly on a server.

ubuntu.com

 

여기에서 "Download 24.04.2 LTS 3GB" 버튼을 눌러 받아줍시다.

Ubuntu Deskop은 6GB정도입니다 2배나 차이나네요.

 

 

다 받았으면 rufus도 받아줍시다. iso image를 usb storage에 넣어 부팅 가능한 usb 드라이브로 만들어 줍니다.

https://rufus.ie/ko/

 

Rufus - 간편한 방법으로 부팅 가능한 USB 드라이브 만들기

Rufus는 USB 키/펜드라이브, 메모리 스틱 등과 같은 부팅 가능한 USB 플래시 드라이브를 포맷하고 생성하는 데 도움이 되는 유틸리티입니다. Rufus는 작은 크기에도 불구하고 필요한 모든 것을 제공

rufus.ie

 

rufus.exe가 다운로드가 끝났으면 이제 rufus.exe를 실행합니다.

 

 

장치에는 USB storage를 선택하고 부팅선택은 Ubuntu server iso를 선택합니다. 파티션 구성은 GPT로 합니다. 준비가 되었으면 바로 시작을 하면 됩니다. 끝나면 Rufus를 종료합니다. 이제 Ubuntu server iso는 만들어졌으니 Ubuntu server OS를 설치하기 위해 설치할 PC에 usb를 연결합니다.

 

 


2. Install Ubuntu Server OS

이제 PC 전원 스위치를 누릅니다. 그리고 키보드에 F12, Del 키(+각자 mainboard의 bios 진입 key) 를 연타합니다. board마다 다르겠지만 Gigabyte mainboard는 저 버튼이면 대부분 가능했습니다. 그러면 UEFI 화면에 진입합니다.

 

BIOS 이미지 출처 : https://www.gigabyte.com/WebPage/1081/amd800-bios.html

Gigabyte 공홈에서 제공하는 image입니다.

 

 

제 board는 ice여서 이런 흰색이었습니다.

출처 : https://quasarzone.com/bbs/qc_qsz/views/1810632

 

위에 보시면 ADVANCED MODE 버튼이 있습니다. 클릭하면 여러 옵션들을 다룰 수 있습니다.

 

 

저는 사실 여기서 몇가지 옵션들을 비활성화 하지 않으면 제대로 된 부팅을 할 수 없어서 진행에 어려움을 겼었습니다. 예를 들면 이런 에러가 발생했었습니다.

 

EFI stub: Measured initrd data into PCR 9

 

이 문구가 뜨면서 컴퓨터가 더이상 진행하지 않아 ubuntu server 설치에 어려움을 겪었습니다. 이런 문제를 해결하기 위해 비활성화 할 옵션은 다음과 같습니다.

 

1. Secure boot 비활성화 (Secure Boot-signed bootload 문제)

 

 

2. TPM(Trusted Platform Module) 비활성화

Trusted Platform Module을 비활성화 하면 됩니다.

 

 

이렇게 하면 EFI stub 문구로 install이 진행 안되는 것을 넘어갈 수 있습니다. 차후에 다시 이 옵션을 활성화 해도 됩니다.

 

 

Ubuntu 설치 화면이 뜨면 각자의 설정을 잘 입력해 줍니다. 그와중에 internet driver가 없어서 아무것도 연결하지 못하고 지나가게 됩니다. 

 

Profile configuration까지 작성하게 되면 이제 설치는 완료되었습니다. 대충 이런 그림일 겁니다.

이런 화면 나오면 이제 설치는 끝

 

이 화면의 하단에는 "Reboot now"가 있습니다. 이 옵션을 클릭하면 이제 usb를 제거하라는 말이 나옵니다. usb를 제거하고 reboot를 합니다. 그러면 ubuntu server가 정상적으로 설치되었음을 확인할 수 있습니다.

 

이제 internet 연결을 해보도록 하겠습니다.

 

 

 


3. Internet 연결을 위한 Driver 설치

Ubuntu server OS를 처음 설치하신 분들은 이 부분이 제일 난감할 것이라 생각합니다. driver를 설치하려면 어떤 driver가 필요한지, 그리고 그 driver를 설치하기 위해 source ./autorun.sh를 실행했더니 추가로 뭔가 필요하다 그러고... 이 무한반복을 겪으면 힘들어지죠. 그래서 한번에 해결할 수 있도록 준비했습니다.

 

먼저 Ubuntu Server(이제부터는 단순히 ubuntu라고 합니다)에 어떤 LAN chipset이 있는지 확인해 봅시다.

lspci | grep -i ethernet
sudo lshw -C network

 

위 명령어를 통해 어떤 chipset이 있는지, 어떤 interface를 사용하는지 확인할 수 있습니다. 저는 RTL8125 chipset이 들어가 있었습니다. 이 드라이버는 이 site에서 확인할 수 있었습니다.

https://www.realtek.com/Download/List?cate_id=584

 

Realtek

{downloadItemTitle} Download Description Version Update Time File Size

www.realtek.com

 

문제는 이 driver를 다운 받으면 확장자가 .tar.bz2입니다. 이 파일은 ubuntu가 기본 package만으로는 풀 수가 없어서 windows에서 압축을 푼 다음에 tar로 다시 압축해 줍시다. (용량이 110KB에서 1000KB로 늘긴 하지만...)

 

또 다른 문제는 이 파일이 확실히 드라이버는 맞지만 드라이버를 제대로 설치하려면 make package가 ubuntu에 설치되어 있어야 한다는 것입니다. 그리고 인터넷이 연결되어 있지 않아 make package도 수동 설치해야 합니다. 그리고 make package를 설치하려면 gcc, libcc2같은 dependancy package도 설치를 해야 한다는 것입니다. 이런 package를 한 번에 알아내려면 어떻게 해야 할까요? 제가 풀어낸 방법은 windows에 ubuntu container를 만들어서 make의 depandancy package를 한번에 만들어 내는 것입니다. 

 

windows에 docker 설치는 아래 글을 참고해 주세요

https://tyoon9781.tistory.com/entry/windows-docker-desktop

 

Windows에서 Docker 설치

* 목차 1. Docker 계정 생성 2. Docker Desktop 설치 3. Docker 실행 Intro 저는 Linux를 개발할 때 주로 사용했던 환경이기 때문에 Docker-ce정도만 설치하면 아무 문제 없었습니다. 그런데 어느날 windows PC를 사

tyoon9781.tistory.com

 

docker 설치가 끝났다면 이제 Dockerfile을 만들어 줍시다.

FROM ubuntu:24.04
# ENV DEBIAN_FRONTEND noninteractive
# RUN apt-get update && apt-get install -y ubuntu-server

 

 

Dockerfile을 완전히 ubuntu server 환경으로 만들려고 했는데 그렇게 하지 않아도 괜찮기는 합니다. 아래 옵션 2줄은 완전한 ubuntu-server용으로 하실 분들을 위해 남겨둡니다.

 

 

이번에는 docker-compose.yml을 만들어 주도록 합니다.

version: "3.8"

services:
  myservice:
    build: .
    volumes:
      - .:/code
    command: sleep infinity

 

 

이제 아래 명령어로 ubuntu container를 만들어 줍시다.

docker compose up

 

 

그러면 vscode에서 container를 하나 보실 수 있습니다. 접속합시다.

ubuntu container를 이용해서 설치할 deb 파일들을 빠르게 알아내서 손쉽게 받을 수 있다.

 

 

/code 폴더에 접속하면 다음과 같은 화면을 볼 수 있습니다.

 

 

terminal에서 다음과 같은 명령어를 실행합니다.

apt-get install --print-uris -y make build-essential isc-dhcp-client | sed -n "s/^'\(http[^']*\)'.*/\1/p" > download-list.txt

 

 

이 명령어를 실행하면 make, build-essential, dhcp등 driver 설치, 인터넷 연결에 필요한 모든 의존성 package를 download-list.txt에 작성하게 됩니다.

139개의 의존성 package목록을 얻었다.

 

이 package들을 이제 다운 받아 봅시다. 

 

apt-get install wget
wget -i download-list.txt -P ./packages

 

 

그러면 이제 ./packages 폴더에 *.deb 파일이 가득할 것입니다. 이 deb 파일들과 chipset driver를 usb에 넣고 ubuntu에 넣습니다. (usb mount는 생략하겠습니다)

 

파일을 다 옮겼으면 (home에 옮겼다고 가정합니다) 먼저 deb 파일들을 설치하기 위해 다음 명령어를 실행합니다.

dpkg -i ~/packages/*.deb

 

 

아마 서로의 의존성으로 인해 한번에는 설치가 안될 것입니다. 몇번 반복 수행 하다보면 금방 다 설치가 됩니다.

 

deb 설치가 전부 완료되었다면 이제는 make가 동작할 것입니다. make --version으로 make가 동작하는지 확인해 봅시다.

make --version

 

 

그리고 realtek chipset driver도 설치합시다. (정확한 경로는 기억안나지만 이런식으로 설치했었습니다)

tar -xvf r8125-9.015.00.tar
cd r8125-9.015.00
sudo ./autorun.sh

 

 

이제 driver 설치가 완료되었습니다. 이제 ip를 받아보도록 하겠습니다. 먼저 interface부터 확인해 보겠습니다.

ip a

 

 

저는 1번에 lo(loopback), 2번에 enp14s0로 되어 있습니다. (eth0이신 분들은 eth0로 진행하시면 됩니다.) 아직은 ip가 할당되어 있지 않기 때문에 ip를 할당해 봅니다 (이때 iptime은 인터넷에 연결이 된 상태이며 iptime과 ubuntu는 연결되어 있어야 합니다)

sudo dhclient enp14s0

 

 

이제 다시 ip a를 해보면 192.168.0.xx로 ip가 할당된 것을 확인할 수 있습니다! (이것은 iptime 공유기에 연결했기 때문에 받은 내부 ip이며 만약 wan 망에 직접 연결했다면 외부 ip를 받으셨을 겁니다)

 

ip까지 할당 받았다면 이제 인터넷이 될 것입니다. ping test를 해봅시다.

ping -c 4 8.8.8.8
ping -c 4 google.com

 

 

ping test가 정상적으로 동작했다면 축하합니다! 이제 인터넷이 되는 ubuntu server가 되었습니다!

 

 


4. iptime으로 wireguard vpn 설정

먼저 iptime에 접속하기 위해 iptime의 wifi나 랜선으로 pc를 꽂아서 192.168.0.1에 접속합니다. id/pw는 admin/admin입니다. 로그인해서 빨리 id/pw를 변경합니다.

 

그 다음에는 해야할 작업이 다음과 같습니다.

  1. iptime 공유기를 고정 domain으로 접속하도록 DDNS 설정
  2. ubuntu 할당 ip가 변경되지 않도록 고정 ip 할당
  3. VPN 서버(wireguard) 활성화
  4. ubuntu에 wireguard client 활성화
  5. wireguard 서버설정에 ubuntu를 Peer로 등록
  6. iphone에 wireguard client 활성화
  7. wireguard 서버설정에 iphone를 Peer로 등록
  8. iphone에서 VPN을 활용해 ubuntu에 접속해보기

이 작업을 모두 마친다면 iphone으로 ubuntu에 접속이 가능해지며 그 누구도 ubuntu에 vpn 없이는 접속하거나 공격할 수 없습니다.

 

 

4.1 DDNS 설정

처음에 iptime의 네트워크에 들어가서(iptime wifi나 lan연결로 들어갈 수 있습니다) 192.168.0.1로 접속하면 login 화면을 볼 수 있습니다.

 

 

저는 이미 로그인 한 후 비밀번호를 설정했지만 초기 값은 아이디 : admin, 비밀번호 : admin입니다. 아이디 비번을 입력하여 로그인을 합시다.

 

 

여기서 초기 비밀번호인 admin은 설정마법사에서 바꾸실 수 있습니다. 계정 설정을 먼저 마무리 한 다음에 관리도구에 들어갑니다.

 

 

이제 DDNS를 설정해봅시다. 전체 메뉴 - 특수 기능 - DDNS 설정에 들어가서 DDNS를 활성화 합시다. 활성화 방법은 호스트 이름 설정과 이메일 설정입니다.

호스트 이름은 길면서도 본인은 쉽게 작성 가능한 이름이 좋겠습니다...ㅎㅎ

 

 

이제 ISP(인터넷 공급업체)에서 iptime의 ip를 변경해도 DDNS를 통해 쉽게 iptime에 접근할 수 있습니다.

 

 

4.2 ubuntu 고정 ip 할당

이번에는 ubuntu에 고정 ip를 할당해보도록 하겠습니다. 전체메뉴 - 네트워크 관리 - DHCP 서버 설정에 들어갑니다

 

 

여기서 DHCP 서버 설정이 안되어 있으신 분들은 실행해주시기 바랍니다. 그리고 하단에 보시면 mac 주소 입력란과 ip입력란이 있습니다. 192.168.0.xx로 원하시는 ip를 적고 ubuntu 서버의 mac주소를 입력하면 고정 ip를 등록할 수 있습니다. (mac주소는 ip a 명령어로 확인할 수 있습니다)

 

아래의 그림은 등록 완료된 그림입니다.

등록된 주소관리에는 mac주소 기반으로 ip를 고정할 수 있다.

 

 

이렇게 하면 이제 ubuntu는 새로운 ip를 받을 수 있습니다. ubuntu에서 아래의 명령어를 다시 수행하면 고정 ip를 받을 수 있습니다.

sudo dhclient enp14s0

 

4.3 VPN 서버 (wireguard) 활성화

이번에는 VPN 서버를 활성화 해보겠습니다. 메뉴는 전체메뉴 - VPN 설정 - WireGuard 서버 설정입니다.

 

여기서 실행을 하면 인터페이스 주소와 포트, NAT on/off, 공개키를 확인할 수 있습니다.

이 정보들은 이 VPN을 사용할 client들에게 필요한 정보들이다.

 

NAT 활성 여부는 다음과 같습니다.

  • NAT on
    • Client 들이 인터넷으로 통신하러 나갈 때 서버의 ip로 변환해서 나가게 됨. 
    • 클라이언트끼리 직접 통신이 어려움 (서버를 경유해야 함)
    • 보안성이 높아짐 (내부 클라이언트의 실제IP가 노출되지 않음)
    • 대부분의 VPN 사용 방식
  • NAT off
    • Client 들이 VPN 내부에서 직접 통신 가능 (서버 경유하지 않아도 됨)
    • VPN 내부 네트워크에서 직접 장치 간 연결이 필요할 때 유용
    • 클라이언트들이 직접 IP를 공개함(보안성이 낮아짐)

 

결론은...저는 보안성이 중요하며, client들끼리 직접 통신할 필요가 없으므로 NAT on을 선택했습니다.

 

자...이제 저희에게 주어진 것은 다음과 같습니다.

  1. DDNS 주소
  2. WireGuard public key
  3. WireGuard 인터페이스 주소
  4. WireGuard 인터페이스 포트

 

이 정보를 가지고 ubuntu에 WireGuard client를 활성화 해보겠습니다.

 

 

4.4 ubuntu에 wireguard client 활성화

ubuntu에 접속해서 wireguard를 설치합니다.

sudo apt update
sudo apt install wireguard

 

 

다음에는 public key, private key를 만듭니다.

wg genkey | tee privatekey | wg pubkey > publickey

 

 

이 정보를 ubuntu private key, ubuntu public key 라고 합시다. 이후에 사용되는 정보이니 기억합시다.

 

 

다음과 같은 client 설정 파일을 만듭니다.

sudo nano /etc/wireguard/wg0.conf

 

 

파일 내용은 다음과 같습니다. 지금까지 얻었던 정보를 사용할 때입니다.

[Interface]
PrivateKey = {Ubuntu Private Key}
Address = {WireGuard Interface Address + 1 (10.xx.xx.2)}/24
DNS = 8.8.8.8

[Peer]
PublicKey = {WireGuard Public Key}
Endpoint = {DDNS:WireGuard Interface Port}
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

 

 

WireGuard Interface Address + 1이 어떤 내용인지 잘 모르시는 분들은...WireGuard 서버 설정에서 받은 Interface Address가 만약에 10.115.10.1이라면 이 주소는 WireGuard 서버 주소인 것이고 Ubuntu는 10.115.10.2를 부여하시면 됩니다.

 

DDNS:WireGuard Interface Port인 경우는 DDNS에서 정한 domain이 만약 "myserver"인 경우 

myserver.iptime.org:51202 이렇게 적게 됩니다.

 

다 적으셨으면 이제 ubuntu wireguard client를 실행하겠습니다.

 

sudo wg-quick up wg0

 

 

4.5 wireguard 서버설정에 ubuntu를 Peer로 등록

다시 iptime으로 돌아옵니다.

 

iptime에서 전체 메뉴 - VPN 설정 - WireGuard 서버 설정 에 들어가서 + 버튼을 눌러 Peer를 추가합니다.

 

여기에 들어가는 정보는 다음과 같습니다.

 

  • 이름 : ubuntu (혹은 원하시는 이름을 하면 됩니다)
  • 피어 주소 : 10.115.xx.2 (위에서 설정했던 WireGuard Interface Address + 1)
  • 피어 공개 키 : Ubuntu Public Key
  • 사전 공유 키 : 비움

 

추가를 누릅니다. 그러면 client가 추가됩니다.

 

현재 상태는 ubuntu와 iptime이 wireguard의 client와 server로 통신이 가능한 상태입니다. ubuntnu에서 확인해 봅시다.

sudo wg-quick up wg0
sudo wg show

 

 

wg show로 handshake가 정상적으로 갱신되는지 확인을 해보고 ping test도 해봅니다.

 

ping -c 4 10.xx.xx.1

 

 

ping이 정상적으로 간다면 이제 연결은 끝났습니다.

 

 

4.6 iphone에 wireguard client 활성화

iphone에서 wireguard client를 활성화 하기 위해 아이폰에 WireGuard App을 설치합니다.

 

 

사실상 ubuntu와 똑같이 진행하면 됩니다. WireGuard에서 private key, public key를 발급한 다음에 아래 화면과 같이 입력하면 됩니다.

공식 App의 예시 사진

 

 

Ubuntu의 형식을 빌리자면 이렇게 표현할 수 있습니다.

[Interface]
PrivateKey = {Iphone Private Key}
Address = {WireGuard Interface Address + 2 (10.xx.xx.3)}/24
DNS = 8.8.8.8

[Peer]
PublicKey = {WireGuard Public Key}
Endpoint = {DDNS:WireGuard Interface Port}
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

 

사실상 Iphone Private Key와 WireGuard Interface Address + 2만 잘 생각해서 입력하면 됩니다. 이제는 쉽죠?

 

그리고 VPN이 APP으로 설치되면서 여러가지 설정을 하게 될텐데 전부 기본적인 설정이니 VPN 사용을 하겠다는 설정을 하시고 WireGuard VPN을 Active하면 됩니다. 참고로 저는 VPN명을 DDNS로 했습니다.

처음에는 1개만 있다.

 

 

4.7 wireguard 서버설정에 iphone를 Peer로 등록

마지막으로 iptime에 다시 접속해서 Peer등록을 합시다.

 

여기서 입력되는 정보는 아래와 같습니다.

  • 이름 : Iphone (혹은 다른 이름도 괜찮습니다)
  • 피어 주소 : 10.xx.xx.3
  • 피어 공개 키 : Iphone public key

이제 모든 연결이 끝났습니다. 만약 연결이 제대로 되었는지 궁금하시다면 이제 Iphone에서 Ubuntu로 ssh 접속을 해봐야 겠죠?

 

4.8 Iphone에서 VPN을 활용해 ubuntu에 접속해보기

Iphone에서 ssh를 사용할 수 있도록 돕는 Termius를 설치합니다.

iphone으로 ssh를 할 일이 있냐고요...? 그냥 해보는 겁니다. 언제 이런걸 해보겠습니까ㅎㅎ

 

여기에 접속해서 ssh 연결을 시도해 보도록 하겠습니다. 아 물론 ssh는 ubuntu 서버에 설치하셔야 합니다. 이제는 internet이 되니까 쉽게 설치하실 수 있죠?

sudo apt install openssh-server

 

 

ubuntu에서 ssh 설정은 원하는 대로 하시고...이제 vpn을 키고 termius를 실행합니다.

 

실행하면 host 추가를 확인하실 수 있는데 여기에 입력해야 할 것은 1가지 입니다.

바로 Ubuntu의 iptime 내부 고정 ip입니다.

 

Label : Ubuntu

IP or Hostname : 192.168.0.xx (ubuntu의 iptime 내부 고정 ip)

 

그 외의 정보는 개인 환경에 맞게 잘 채워주면 이제 ssh로 접속이 되는 것을 확인하실 수 있습니다.

 

여기까지 읽느라 수고 많으셨습니다...감사합니다...ㅎㅎ

 

 


마치며

이번 글에서는 참 많은 것들을 했습니다. Ubuntu 관점에서만 얘기하자면 다음과 같습니다.

 

1. Ubuntu server 설치

2. 순정 Ubuntu server에 internet driver 설치

3. Ubuntu server의 외부 보안 접속을 위한 VPN 설정

 

이것들을 제대로 해내기 위해서 참 많은 것들을 설정하고 시행착오를 거쳐가면서 많이 돌아가기도 했지만 막상 이렇게 글로 작성할 정도가 되니 이제 ubuntu 설치나 package offline 설치, VPN 설정은 이제 평범한 일이 되었습니다. 여러분들도 이 글을 통해서 Ubuntu 설치, VPN 설정을 쉽게 하실 수 있기를 바랍니다. 감사합니다.

 

 


 

*reference

https://tyoon9781.tistory.com/entry/windows-docker-desktop

https://www.realtek.com/Download/List?cate_id=584

https://www.gigabyte.com/WebPage/1081/amd800-bios.html

https://ubuntu.com/download/server
https://www.wireguard.com/
https://apps.apple.com/us/app/wireguard/id1441195209

https://apps.apple.com/us/app/termius-modern-ssh-client/id549039908