반응형

 

 작성일: 2024년 8월 7일

 

 

 

Ubuntu 24.04를 설치하고 한글 입력기 설정할 때 헷갈려서 메모를 남겨본다.

처음에는 한영 전환 설정하는 방법을 잘 몰라서 설정 화면에서 이것저것 다 해봐도 잘 안 되었다.

몇 가지 설정 메뉴를 왔다갔다하고, 시행 착오를 겪은 끝에 정확한 "한/영" 전환 설정 방법을 알았다 ^^

 


!!! 한글 입력을 위해 설정해야 할 핵심은 키보드가 "Korean -> Korean"이 아니라 "Korean -> Hangul" 이라는 것 !!!


 

아래에 설명된 설정 순서를 따라해보면 한글 입력이 잘 될 것이다. ^^

화면 하나하나 캡쳐서 설명을 기록하다보니 내용이 길다.

어려운 내용은 없고, 그냥 화면을 보면서 따라하면 "한영 전환" 설정이 잘 될 것이다. 

 


 

Step 1 :  한국어 언어 지원 추가

아래 Settings 화면을 이용하여 "Korean" 언어 지원 도구를 설치해야 한다.

[ Settings ] 화면에서 언어  설정 관련 메뉴를 검색한다.

 

 

[ Managed Installed Languages ] 메뉴를 선택한다.

 

 

자동으로 지원 가능한 언어를 체크하니까, 이 작성이 종료될 때까지 몇 초간 기다린다.

 

 

[ Language support ] 관련 소프트웨어를 설치한다.

 

 

[ 언어 지원 ] 관련 소프트웨어가 자동으로 설치될 때까지 기다린다.

 

 

[ Hangul ] 언어 지원을 추가하기 위해 [Install/Remove Languages] 버튼을 클릭힌다.

 

 

[ Korean ] 항목의 체크 박스를 활성화한다.

 

 

[ Hangul ] 언어 지원 관련 소프트웨어가 설치될 때까지 몇초간 기다린다.

 

 

[ Language Support ] 화면에 "한국어" 항목이 추가된었는지 확인한다.

 

 

[ 한국어 ] 언어 지원 관련 소프트웨어 설치가 끝났으므로, [ Close ] 버튼을 눌러서 설정 화면을 닫는다.

 

 

.

.

.

Step 2 :  Reboot (OS 재시작)

 

주의:
  위와 같이 "한국어 언어 지원"을 설치하고 나서, 아래와 같이 Ubuntu 24.04를 Reboot해줘야 한다.
  시간을 아껴보려고, ibus-setup 입력기 설정 프로그램을 바로 실행시켜보았는데 정상적으로 동작하지 않았다.
  따라서 꼭! 꼭!  OS Reboot 후에 다음 설정 절차를 진행하시길 ^^

 

 

Ubuntu OS 재시작 (Reboot)

 

 

 

 

OS Reboot이 완료된 후, 아래와 같이 IBus 설정 작성을 진행한다.

 

 


 

Step 3 :  한글(Hangul) 입력 방식 추가

 

Hangul(한글) 입력을 위해서 ibus 프로그램이 필요한다.

아래 화면과 같이 [ ibus-setup ] 명령을 실행하여, [ IBus Preferences ] 화면을 연다.

 

터미널에서 ibus-setup 명령을 수행한다.

 

아래 설정 화면과 같이 [ Input Method ] 를 추가한다.

[ IBus Preferences ] 설정 화면에서 [ Input Method ] 탭을 선택한다.

 

 

[ Input Method ]로써 "Korean"을 선택한다.

입력 방식으로써 "Korean"을 선택한다.

 

 

 

!!! 중요 !!!

꼭 "Hangul"을 선택해야 한다. Korean을 선택하면, 한영 전환이 안 된다.

대부분 Ubuntu 22.04 ~ 24.04를 사용하는 유저들이 이 설정 단계에서 Korean을 선택하기 때문에 한영 변환이 잘 안 되는 것이다.

(나도 이것 때문에 한영 전환이 안 되었음 ㅠㅠ)

 

"Korean" 항목의 하위 메뉴에 있는 "Hangul"을 선택하여 추가한다.

 

 

!!! 중요 !!!

위와 같이 설정하고 나면 [ Input Method ] 화면에 

"Korean - Hangul" 항목이 추가되어 있을 것이다.  (아래 IBus Preferences 화면을 참고)

 

[ IBus Preferences ]의 입력 방식에 "Korean - Hangul"이 추가되어 있는지 확인해야 한다.

 

 

 

여기까지 한 작업은 "한글 입력기" 관련 소프트웨어를 설치하는 작업이다.
실제로 한영 전환 키 조합은 아래에서 설명한다.

 

 

Step 4 :  키보드 입력 소스 설정

 

[ Keyboard ] 설명 화면에서 [ Add Input Source ] 버튼을 클릭한다.

 

 

[ Input Source ]로써 "Korean"을 선택한다.

 

 

!!! 중요 !!!

아래 설정 화면에서 꼭 "Korean Hangul"을 선택해야 한다. Korean을 선택하면, 한영 전환이 안 된다.

대부분 Ubuntu 22.04 ~ 24.04를 사용하는 유저들이 이 설정 단계에서 Korean을 선택하기 때문에 한영 변환이 잘 안 되는 것이다.

(나도 이것 때문에 한영 전환이 안 되었음 ㅠㅠ)

 

"Korean" 항목의 하위 항목인 "Korean (Hangul)"을 선택한다.

 

 

아래 설정 화면과 같이 "Korean (Hangul)" 항목이 [Input Sources]에 추가되어 있어야 한다.

[ Input Sources ] 화면에 "Korean (Hangul)" 항목이 추가되어 있어야 한다.

 

 

아래 화면에서 "English (US)"를 삭제해야 한다.

꼭 "English (US)" 항목을 지워야 하는 건 아니지만, 이 입력 방식이 남아 있으면 한글 입력할 때 불편하다.
그냥 필요 없는 것은 지우고 편하게 살자 !!!

 

 

아래 화면처럼 깔끔하게 "Korean (Hangul)" 항목만 남으면, 설정이 잘 된 것이다.

 

 

 

Ubuntu 24.04 데스크탑 화면의 우측 상단에 [ EN ] 아이콘을 클릭해서

"Korean (Hangul)" 항목이 있는지 확인한다.

만약, "Korean (Hangul)" 항목이 없으면, 이 블로그 글의 처음으로 돌아가서 설정 절차를 꼼꼼히 보고, 빠뜨린 절차가 있는지 체크해본다.

 

 

 

한영 전환을 위한 키보드 설정 끝 !!!

 

한글 입력, 영어 입력 테스트 해보기.

참고:

기본 한영 전환 키조합은 [ Shift key ] + [ Space key ] 이다

 

Ubuntu 24.04 한영 전환 테스트 (한글 입력 테스트)

 

 

 

 

 

 

추가 설정 (옵션)

위 설정 작업까지 하면 "한/영" 전환이 잘 되는 것을 알 수 있다.

단, 한글 / 영어 사이의 기본 전환 키 조합[Shift key] + [Space key]이다.

따라서 다른 키 조합으로 "한/영" 전환하고 싶다면, 아래와 같이 추가로 옵션 설정을 해줘야 한다.

 

[ Korean (Hangul) ] 항목의 오른쪽 추가 옵션 버튼을 눌러서 [ Preferences ] 메뉴를 클릭한다.

 

 

 

[ IBusHangul Setup ] 화면에서 본인이 원하는 한영 전환 키 조합을 설정한다.

 

 

 

 


 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)

근무지 위치:
  서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 50% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
  - 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
    예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver  
  - Algorithm(C언어, C++ 언어로 구현 가능해야 함)
    예를 들어, Hashtable, Linked list 자료 구조 정도를 C 또는 C++로 구현할 수 있으면 Good! 
  - Network 패킷 처리 지식(Network layer 2 ~ 4)
    예를 들어, DHCP Server/Client 기능(Discover, Offer 등) 구현할 정도의 능력이 있으면 됨.
  - 우리 연구소에서는 Netfilter(iptables)를 잘 사용하면 업무를 수행함에 있어서 편함. (Netfilter를 모르면 동료가 잘 알려줄 것임)
  - IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
  # 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
  # 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
  # 위 내용을 잘 모르지만, 이 분야에 대해 공부하면서 일하고 싶다면 저에게 문의 메일을 주세요~
  # 학습 잠재력이 높은 것이 보인다면, 협업할 동료로써 환영합니다 ^^
회사에서 사용하는 프로그래밍 언어:
  - 프로그래밍 언어: C, C++, Go, Rust
    (참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
  - 출근: 8~10시 사이에서 자유롭게 선택
  - 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
  - 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
  - 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
  - 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
  - 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
  - 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
  - "sejong.jeonjo@gmail.com"  # 궁금한 점은 이 연락처로 문의주세요.
  - 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
  - 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
  - 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
  - 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
  - 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
  - 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
  - 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
  - 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
  - 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

반응형

 

 

작성일: 2024년 8월 7일
테스트한 macOS 버전:
   - macOS 12(Monterey)
   - macOS 13(Ventura)
   - macOS 14(Sonoma)

 


참고:
아래 한영 변환 설명이 잘맞는 Paralles Desktop 버전 및 MS Windows 버전 조합
 [ Shift Key ] + [ Space Key ]

 

 

Parallels Desktop 버전 MS Windows 버전 한영 변환 키 설정 결과
v16 Windows 10 아래 설정 내용과 맞지 않음.
v17 Windows 11 OK
v18 Windows 11 OK
v19 Windows 11 OK

[ 2023년 12월 4일 기준, 최신 버전으로 Update한 Paralles와 MS Windows를 직접 테스트한 결과 표 ]

 

 

문제/이슈: OS마다 다른 한영 변환 키 조합 ㅠㅠ

내 경우, Mac OS에서는 [Shift Key] + [Space Key]로 한영 변환을 하는데,

Parallels + Windows 기본 설정은 [Right Alt 또는 Option Key]가 한영 변환키이기 때문에 스트레스가 생긴다.

그래서 오늘은 Mac OS랑 Windows랑 한영 변환키를 통일시키기로 마음먹고 작업했다.

해보면 별거 아닌데, 이 설정 조합을 찾기까지 10분 정도 뻘짓을 한 것 같다 ㅠㅠ

다음에 새 Macbook을 구입할 때, 또 시간을 허비하지 않기 위해 설정하는 방법을 잘 메모해야겠다~~

 

 

 

아래 설정을 따라하면, 아주 잘 동작함

 


 

Parallels + MS Windows 한영 변환 설정

MS Windows 11 (VM)에서 설정할 내용

아래 화면처럼 MS Windows 11의 [ 시간 및 언어 ]  >  [ 언어 및 지역 ]  >  [ 언어 ]  >  [ 한국어 ] 설정 메뉴를 선택한다.

 

 

[ ... ] 메뉴에서 [ 언어 옵션 ] 메뉴를 선택하면 아래와 같은 설정 화면이 나온다.

[키보드] / [키보드 레이아웃]을 "종류 3"으로 변경한다.

 

 

그리고 사용자 Log out하고, 다시 Log in한다.

 

 

Parallels Desktop 설정에서 설정할 내용

Parallels Desktop의 [ Control Center ] 화면을 열고,

[ CMD ] + [ , ] 키를 눌러서 [ Parallels Desktop Preferences ] 화면을 연다.

아래 화면처럼 [ Shortcuts ] 메뉴의 [VIRTUAL MACHINES ] 에서 Windows 11 VM을 선택하고 [ Profile ]을 추가한다.

나는 Profile 목록의 제일 아래에 [Shift + Space] 항목을 추가했다.

 

 

 

위 화면에서 [ + ] 버튼을 누르면, 아래 화면이 뜨고

이 설정 화면에서 [ Shift ] + [ Space ] 키 조합을 설정한다.

 

 

이제 한영 변환키가 Mac OS랑 Windows 11랑 동일해졌다.

 

 

게시물 작성자: sejong.jeonjo@gmail.com

 


 

 

 

 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)

근무지 위치:
  서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
  - 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
    예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver  
  - Linux OS에서 IPC 구현이 가능
    예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨. 
  - Algorithm(C언어, C++ 언어로 구현 가능해야 함)
    예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도 
  - Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
    예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
  - Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
  - IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
  # 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
  # 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
  - 프로그래밍 언어: C, C++, Go
    (참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
  - 출근: 8~10시 사이에서 자유롭게 선택
  - 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
  - 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
  - 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
  - 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
  - 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
  - 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
  - "sejong.jeonjo@gmail.com"  # 궁금한 점은 이 연락처로 문의주세요.
  - 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
  - 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
  - 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
  - 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
  - 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
  - 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
  - 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
  - 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
  - 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)

 

 

 

반응형

 


글 작성 및 테스트한 날짜: 2023년 2월 21일

 

<< 참고 문서 >>

InnoDB(MariaDB, MySQL) System Variables 전체 목록 및 상세 설명 문서
  - https://mariadb.com/kb/en/innodb-system-variables/

DB 관리 목적의 SQL (예: show, backup, analyze, kill, reset, use)
  - https://mariadb.com/kb/en/administrative-sql-statements/

 

 

자세한 설명을 하기 전에 설정 파일 예제부터 보자.

$ cat /etc/mysql/conf.d/mariadb.cnf

[client-server]
port = 3306
socket = /run/mysqld/mysqld.sock

[mariadbd]
server-id = 1
bind-address = 0.0.0.0
lower_case_table_names = 1

... 중간 생략 ...

##
## NOTE: 성능 테스트를 위해 아래 4개 항목을 변경하면서 Query Per Second를 측정해봤다.
##
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT_NO_FSYNC
innodb_flush_sync = OFF
innodb_use_native_aio = OFF

... 중간 생략 ...

$

 

 

Transaction Commit Log에 대한 Flush 여부 설정

설정 항목: innodb_flush_log_at_trx_commit

 

##
##  innodb_flush_log_at_trx_commit 설정 변경
##


MariaDB [(none)]> show variables like '%innodb_flush_log_at%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout    | 1    |
| innodb_flush_log_at_trx_commit | 0     |
+--------------------------------+-------+
2 rows in set (0.001 sec)

MariaDB [(none)]> set global innodb_flush_log_at_trx_commit=0;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]>  show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 0     |
+--------------------------------+-------+
1 row in set (0.000 sec)

MariaDB [(none)]>

 

위 설정 관련 참고 문서:  innodb_flush_log_at_trx_commit 개념 그림 및 튜닝
https://yunhyeonglee.tistory.com/41

 

Flush method 개념

설정 항목: innodb-flush-method

아래 문서를 참고

-  https://medium.com/releem/innodb-flush-method-cbe0ebba8acb
-  https://dus815.tistory.com/entry/Mysql-InnoDB-%EC%97%90%EC%84%9C-OS-Cache-%EC%99%80%EC%9D%98-%EA%B4%80%EA%B3%84

그런데 mariaDB, MySQL 버전이 올라오면서 최근에는 이 설정값을 변경할 수 없다.

 

 

 

 

반응형

 


 


테스트한 날짜: 2023년 2월 14일

 

 

아래와 같이  /etc/containers/registries.conf.d/myregistry.conf 파일에 container image registry의 주소를 추가한다.

만약, 8080, 8443 같은 포트를 사용한다면 domain name 뒤에 :8080, :8443 값을 붙여주어야 한다.

 

 

(참고:  아래 2개 명령 중에서 첫번째 명령만 수행해도 잘 동작한다 ^^)

 

$  cat > /etc/containers/registries.conf.d/myregistry.conf <<EOF

[[registry]]
location = "registry.myexample.kr"
insecure = true

EOF

$


$  cat > /etc/containers/registries.conf.d/your_registry.conf <<EOF

[[registry]]
location = "registry.your-example.kr:8443"
insecure = true

EOF

$

 

 

위와 같이 conf 파일만 작성하고 바로 podman 명령을 수행하면 잘 동작한다.

 

 

$  podman login registry.myexample.kr

Username: gildong
Password:
Login Succeeded!

$

 


 

반응형

 


 

Kubernetes 또는 Docker, CRI-O 등 Container runtime 환경에서 container를 사용하다보면,

UTC + 0로 timezone이 설정되어 있는 경우를 자주 본다.

Container 내부의 timezoneSeoul(서울)로 변경하려면 아래와 같이 따라하면 된다.

 

FROM ubuntu:22.04

... 중간 생략 ...

##
## Timezone 변경: Asia/Seoul 로 설정
##

RUN   apt install -y tzdata
RUN   ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

... 중간 생략 ...

 


 

 

반응형

 


 

작성일: 2023년 7월 16일
IPv6 스터디하면서 참고했던 자료나 기억할 것을 여기에 기록하기

 

IPv6 주소 표기

IPv6 주소 표기

  • 128 bit
  • 16 bit 씩 8자리로 구성. 각 자리는 콜론으로 구분
  • 앞 64 bit는 network address, 뒤 64 bit는 장비의 network interface address
    (network address는 64 bit 길이가 아니어도 된다. 더 크거나 더 작아도 된다.)
  • IPv6 주소 예시
2001:db8:0:1::a00:1
2001:db8:0:1::a00:1/64

 

IPv4, IPv6 Header 구조 비교

IPv4, IPv6 Header 구조 비교

 

IPv6 확장 Header

 

IPv6 확장 Header

 

IPv6 통신 방식 (Network Node 간 통신 방식)

IPv6 통신 방식 Description
Unicast 1:1 통신 (특정 1개 Node간 통신)
Multicast 1:N 또는 N:M 노드간 통신
Anycast 전세계에 동일한 Anycast address를 가진 node 중에서 가장 통신 cost가 적게 되는 node를 선택하여 통신

 

 

IPv6 주소 종류

IPv6 Address Types

Unicast Address 종류

Unicast Address 종류 Description
Global Unicast Address - Public IP Address
- IPv4에 비유하자면 Public IP address 같은 용도로 사용하는 IPv6 address
- 2000::/3
- 각 기관별 IPv6 할당 가능한 주소 값을 아래 할당 표를 열람
   https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml
- 국내 IPv6 관리 대행자별 IPv6 주소 목록
   https://krnic.kisa.or.kr/jsp/business/management/isCurrentIpv6.jsp

Link-Local Unicast Address - Link 내에서만 사용 가능한 Address.
- 예를 들어, Router-A가 Link-Local Unicast Address를 Destination Address로 하는 패킷을 받으면 다른 Network로 Forward하지 않는다.
- 그래서 1개 Link 구간에서 Network control message를 전달할 때, 이 주소를 사용한다.
- 만약, 1개 물리적 포트에 Global Unicast Address와 Link-Local Unicast Address를 모두 설정한 경우라면 Global Unicast Address 값을 변경하는 경우에도 Link-Local Unicast Address로 통신이 가능하다.
- 1개 Link 내에서만 통신이 가능하기 때문에 ICMPv6를 이용한 외부에서의 공격을 원천적으로 막을 수 있다.
- IPv4의 자동 설정 IP 주소인 169.254.x.x에 유사한 목적으로 사용됨
- FE80::/10
Unique Local Unicast Address - IPv4에 비유하자면 Private network address(10.0.0.0 172.16.0.0 192.168.0.0) 같은 IPv6 address.
- 예를 들어, 1개 회사 빌딩 내부에서의 통신, 1개 대학 캠퍼스 내부에서의 통신만 할 때 이 주소를 사용한다.
- FC00::/7

예시: Global Unicast Address

(예시) Global Unicast Address

예시: Link Local Unicast Address

(예시) Link Local Unicast Address

 

Multicast Address

ff00::/8 - IPv6 멀티캐스트를 위한 주소공간이다. IPv4에서 제공했던 브로드캐스트는 IPv6에서는 더 이상 지원되지 않으며, IPv6에서는 대신 멀티캐스트를 사용해야 한다.

Multicast Address 종류 Description
Solicited Node Multicast - 이더넷 환경에서 Neighbor 탐색 과정(IPv4의 ARP 과정과 유사)에 사용
Auto configuration 과정에서 DAD(Duplicate Address Detection) 과정을 거칠 때 사용
- Solicited Node Multicast 주소의 112비트 부분은 FF02::1:FF로 정해져 있으며 나머지 24비트는 IPv6의 최하위 24비트 부분을 차용하여 사용
(예: IPv6 주소-2001:1:1:1::1234:5678 → Solicited node multicast 주소- FF02::1:FF34:5678)
All Node Multicast - 노드의 모든 IPv6 호스트와 라우터들이 소속되어 있는 그룹
- All node multicast주소는 FF02::1 사용
All Router Multicast 모든 IPv6 라우터들이 소속되어 있는 그룹
- All router multicast 주소는 FF02::2 사용

IPv6 Multicast Group

IPv6 Multicast Group

 

Anycast Address

Anycast 통신은 ‘1:가장 가까운 1’간의 통신방식이라고 정의할 수 있다.

동일한 주소를 가지는 여러 목적지 장비들 중 출발지 장비와 가장 가까운 장비가 응답을 하는 통신방식이다.
이러한 통신방식은 멀티캐스트와 유사하지만 멀티캐스트의 경우 동일 그룹에 소속된 장비들이 응답을 하는 반면, 애니캐스트의 경우는 동일 주소를 가지는 장비들 중 가장 가까운 장비 하나만 응답을 한다는 차이가 있다.

 

IPv4-mapped IPv6 addresses

주소 표현 예시 ::FFFF:129.144.52.38
명령 사용 예시 $  ping ::ffff:192.168.139.50
$  ping ::ffff:c0a8:8b32

 

IPv6 Address Scope 개념

IPv6 Address Scope 종류 Description
Global Scope IPv6로 통신할 수 있는 모든 영역 (예: 지구 전체)
Link-Local Scope Broadcast domain 또는 Network interface가 직접 연결된 Link 영역
Site-Local Scope [ 내 생각:  실제로 이 Site-Local Scope 개념이 사용되는지 모르겠음 ]

[ 내 생각:  Site-Local Address는 2004년 10월 RFC3897에서 폐기되었음. 아마 Site-Local Scope의 모호성 때문에 폐기한 것이 아닌가 추정해봄 ]

한 조직의 관리자가 관리하는 Network 영역 (예: 특정 통신사, 회사, 호텔, 정부청사 같은 영역)
네트워크 관리자가 Site-Local Scope을 설정하는 것이므로 Scope의 경계를 설명하기 애매하다.
예를 들어, 네트워크 관리자가 A회사와 B호텔을 1개의 Site-Local Scope으로 지정하면,
의도하지 않게 Networking이 되는 상황이 발생

 

 

국내 IPv6 관리대행자별 IPv6 주소 목록 (2023.07.17 현재)

기관명 영문서비스명 시작주소 프리픽스 개수 할당일
에이비클 ABCLE 2001:0EF8:: /32 65536 20040524
(주)아프리카티비 AFREECATV 2406:6600:: /32 65536 20110124
(주)엘지유플러스 BORANET 2001:0270:: /32 65536 20000908
씨디네트웍스 CDNETWORKS 2401:C500:: /32 65536 20110830
(주) 씨엠비 CMBI-NETDJ 2403:6500:: /32 65536 20120326
주식회사 씨엠비영등포방송 CMBI-NETHK 2404:2300:: /32 65536 20120607
주식회사 씨엠비광주방송 CMBKWANGJUNET 2406:B000:: /32 65536 20080324
주식회사 씨엠비광주방송 CMBKWANGJUNET 2402:7000:: /32 65536 20080403
(주)다우기술 DAOU 2403:3E00:: /32 65536 20100707
디지털엣지코리아 DEK-NET 2400:FD60:: /32 65536 20230512
삼정데이타서비스(주) DIRECT-HOSTING 2403:3700:: /32 65536 20120307
주식회사 딜라이브 DLIVE 2402:BE00:: /32 65536 20100608
드림라인(주) DREAMX 2001:0C48:: /32 65536 20020812
두루안 DURUAN 2001:0390:: /32 65536 20020207
(주)이호스트아이씨티 EHOSTICT 2407:0B00:: /32 65536 20130529
(주)가비아 GABIA-IP 2401:9EC0:: /32 65536 20170811
한국케이블TV푸른방송(주) GCS 2407:2000:: /32 65536 20070716
엔티티코리아 주식회사 GIN 2001:0D38:: /32 65536 20030515
하이온넷(주) HAIONNET 2404:0800:: /32 65536 20080912
주식회사 에이치씨엔 HCN 2001:0EA0:: /32 65536 20040329
주식회사 하이라인닷넷 HINETWORKS 2407:B200:: /32 65536 20110314
호스트웨이아이디씨(주) HOSTWAY 2406:AD00:: /32 65536 20130410
효성ITX HYOSUNGCDN 2407:3500:: /32 65536 20130618
인천국제공항공사 IIAC 2400:A0A0:: /32 65536 20220816
주식회사 아이네트호스팅 INET 2001:0F48:: /32 65536 20040806
JCN울산중앙방송(주) JCN 2402:1A00:: /32 65536 20100506
주식회사 제이엔디통신 JNDINFO 2402:6100:: /32 65536 20111101
금강방송주식회사 KCNNET 2403:6300:: /32 65536 20120326
한국데이타 KDATA 2406:6800:: /32 65536 20090402
(주)한국데이터통신 KDTIDC 2405:3500:: /32 65536 20120921
(주)엘지유플러스 KIDC 2001:0ED0:: /32 65536 20040418
주식회사 케이아이엔엑스 KINXINC 2001:07FA:0008:: /48 1 20020402
주식회사 케이아이엔엑스 KINXINC 2401:2700:: /32 65536 20110615
한국지능정보사회진흥원 KOREN 2407:C000:: /32 65536 20070522
한국지능정보사회진흥원 KOREN 2406:D000:: /32 65536 20080204
주식회사 케이티 KORNET 2001:0220:: /32 65536 19991006
주식회사 케이티 KORNET 2001:0280:: /32 65536 20000927
주식회사 케이티 KORNET 2001:02B0:: /32 65536 20010102
주식회사 케이티 KORNET 2001:0E60:: /32 65536 20040213
주식회사 케이티 KORNET 2001:0EA8:: /32 65536 20040331
주식회사 케이티 KORNET 2001:0EF0:: /32 65536 20040524
주식회사 케이티 KORNET 2400:0000:: /20 268435456 20050601
재단법인 한국교육전산망협의회 KREN 2001:0E70:: /32 65536 20040317
재단법인 한국교육전산망협의회 KREN 2402:0000:: /22 67108864 20061107
한국과학기술정보연구원 KREONet 2001:0320:: /32 65536 20010823
(주)한국무역정보통신 KTNET 2001:0EB8:: /32 65536 20040407
주식회사 엘지헬로비전 LG-HELLOVISION 2405:7B00:: /32 65536 20121017
(주) 엘지씨엔에스 LG-NET 2400:3300:: /32 65536 20110407
(주)엘지유플러스 LGTELECOM 2001:4430:: /32 65536 20050706
엘엑스(IP주소 인터넷 서비스 업체) LXN 2402:3100:: /32 65536 20111012
네이버클라우드 주식회사 NBP-NET 2402:DE00:: /32 65536 20110107
(주)비트넷 NETIP 2405:5F00:: /32 65536 20121010
엔에이치엔클라우드 NHNCLOUD-NET 2405:D880:: /32 65536 20160630
남인천방송(주) NIBDIGITAL 2407:B800:: /32 65536 20090520
피란하시스템즈 PIRANHA 2402:F400:: /32 65536 20100113
(주)엘지유플러스 PUBNETPLUS 2001:0E78:: /32 65536 20040317
삼성에스디에스(주) SAMSUNGSDS 2001:0330:: /32 65536 20010920
삼성에스디에스(주) SAMSUNGSDS 2404:0180:: /28 1048576 20060829
(주)에스비코리아 SBKOREACORP 2400:FDA6:: /32 65536 20230512
세종텔레콤 주식회사 SHINBIRO 2001:03A8:: /32 65536 20020402
세종텔레콤 주식회사 SHINBIRO 2001:0CF0:: /32 65536 20030122
SK(주) SK-NET 2405:8600:: /32 65536 20101202
에스케이텔레콤(주) SK-TELECOM-NET 2001:02D8:: /32 65536 20010406
에스케이텔레콤(주) SK-TELECOM-NET 2001:0F28:: /32 65536 20040708
에스케이텔링크주식회사 SKTelink 2001:0E98:: /32 65536 20040329
케이디디아이코리아(주) TELEHOUSE-SEOUL 2400:1800:: /32 65536 20090128
유엘네트웍스 ULNETWORKS 2405:4300:: /32 65536 20120925
주식회사 넥스지 VAAN 2402:5800:: /32 65536 20080703
주식회사 브이토피아 VTOPIA 2406:D700:: /32 65536 20130502
(주)엘지유플러스 Xpeed 2406:5900:: /32 65536 20130306
에스케이브로드밴드주식회사 broadNnet 2001:0290:: /32 65536 20001030
에스케이브로드밴드주식회사 broadNnet 2001:0378:: /32 65536 20011218
에스케이브로드밴드주식회사 broadNnet 2001:0EE8:: /32 65536 20040517
에스케이브로드밴드주식회사 broadNnet 2001:44D0:: /28 1048576 20051110
에스케이브로드밴드주식회사 broadNnet 2401:4000:: /32 65536 20070316
에스케이브로드밴드주식회사 broadNnet 2406:4000:: /32 65536 20070316
에스케이브로드밴드주식회사 broadNnet 2401:A800:: /32 65536 20080602
에스케이브로드밴드주식회사 broadNnet 2405:5800:: /32 65536 20081020
에스케이브로드밴드주식회사 broadNnet 2407:6500:: /32 65536 20130705
에스케이브로드밴드주식회사 broadNnet 2407:6700:: /32 65536 20130705
에스케이브로드밴드주식회사 broadNnet 2407:9100:: /32 65536 20130718
에스케이브로드밴드주식회사 broadNnet 2407:C700:: /32 65536 20130822
에스케이브로드밴드주식회사 broadNnet 2400:4980:: /32 65536 20131106
에스케이브로드밴드주식회사 broadNnet 2400:4780:: /32 65536 20131111
에스케이브로드밴드주식회사 broadNnet 2400:9E80:: /32 65536 20140213
에스케이브로드밴드주식회사 broadNnet 2400:9F80:: /32 65536 20140213
에스케이브로드밴드주식회사 broadNnet 2400:A580:: /32 65536 20140218
에스케이브로드밴드주식회사 broadNnet 2400:E180:: /32 65536 20140415
(주)이지오스 eGIOSNET 2405:C000:: /32 65536 20070509

 


 

Linux (Ubuntu)에서 IPv6 Address 사용

IPv6 Address 설정하기 (nmcli 명령 사용)

## ip addr 명령으로 설정
##   a) IPv6 주소 설정
$ ip -6 addr add 2001:db8:0:1::a00:2/64 dev enp1s0

##   b) IPv6 주소 삭제
$ ip -6 addr del 2001:db8:0:1::a00:2/64 dev enp1s0

##   c) IPv6 주소 확인
$ ip -6 addr show dev enp1s0


## nmcli 명령으로 설정
##   a) Network device list 출력
$  nmcli  dev

##   b) IPv6 주소 설정
$ nmcli  con  mod  ens0  ipv6.address 2001:db8:0:1::a00:1/64  ipv6.gateway 2001:db8:0:1::1

 

참고 문서   https://www.lesstif.com/system-admin/centos-nmcli-ip-static-ip-98926807.html

 

 

IPv6 Address 설정하기 (Gnome GUI 설정 화면 사용)

아래 예시 화면처럼 [IPv6] 설정 탭에서 Address, Prefix, Gateway를 설정한다.

IPv6 설정 GUI 화면

 

 

 

Web Browser로 IPv6 주소의 웹 페이지 조회하기

아래 예제처럼 주소창에 IPv6 주소값을 입력하고 테스트해본다.

http://[2001:db8:0:1::a00:1]:8080/

IPv6 주소의 웹페이지 조회

 

curl 명령으로 동일하게 테스트할 수 있다. (아래 예제를 참고)

$  curl http://[2001:db8:0:1::a00:1]:8080/

 Hello from example application. (written by Andrew)

$

 

 

 

CURL 명령으로 IPv6 주소 확인하기 (Global scope address)

## 이 장비의 Network port에 설정된 IPv6 주소 열람하기
$  ip -6 addr

## IPv6 주소 중에서 Global scope 주소만 열람하기
$  ip -6 addr show scope global 

## 나의 NAT 장비의 IPv6 인터넷 주소 확인하기
## (참고: NAT에 IPv6가 설정되지 않았으면, IPv4 주소가 출력된다)
$  dig -6 TXT +short o-o.myaddr.l.google.com @ns1.google.com

$  dig -t aaaa +short myip.opendns.com @resolver1.opendns.com

$  curl -6 https://ifconfig.co

$  curl -6 https://ipv6.icanhazip.com  

$  ssh -6 sshmyip.com

 

 

 

 

 

IPv4 to IPv6 주소 변환하기

IPv4 Address to IPv6 Address Conversion | IPAddressGuide
IPv4 to IPv6 Conversion



 


 

 

참고 문서:
  KRNIC 스터디 자료 
    https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/vsix/icmp.jsp
  NDP 설명 영상
    https://www.youtube.com/watch?v=A3LFt7CHpgs
  https://www.minzkn.com/moniwiki/wiki.php/IPv6
  https://en.wikipedia.org/wiki/IPv6_address

 

 

반응형

 

 

Ubuntu OS를 설치한 후, Network 구성을 바꿀 때 nmtui, netplan, nm-connection-editor 등 CLI 명령을 사용하면 쉽게 network 구성을 설정할 수 있다.

 

nmtui 명령

메모: 지금은 바빠서 설명을 생략.  나중에 내용을 추가할 것 !!
$ nmtui

Text Terminal에서 위 명령을 수행하면, 아래와 같이 동일 Text Terminal에서 TUI가 뜬다.

nmtui 시작 화면

 

 

netplan 명령

길게 설명하는 것보다는 아래 예시를 보고 이해하고 따라하는 것이 좋을 듯 ~~~

 

 

Case A:
만약 Gnome Desktop GUI의 [ Settings ] - [ Network ] - [ Wired ] 화면에서 설정하고 싶으면,
아래와 같이 renderer를 NetworkManager로 지정하고 아무것도 설정하지 않으면 된다.
그러면 NetworkManager가 알아서 Physical Network Device를 찾아서 Profiling할 것이다.

 

$  cat  /etc/netplan/00-installer-config.yaml

network:
    renderer: NetworkManager
    version: 2
    
$  netplan  apply

 

Case B:
만약 Gnome Desktop GUI의 [ Settings ] - [ Network ] - [ Wired ] 화면에서 설정한 값을 무시하고
설정 파일에 있는 Network Config를 적용하고 싶다면, 
아래와 같이 renderer를 networkd 로 지정한다. 그런 후에 원하는 설정을 추가한다.
$  cat  /etc/netplan/00-installer-config.yaml

network:
    renderer: networkd
    version: 2
    ethernets:
        enp4s0:
            addresses:
                - 0.0.0.0/32
        br-ex:
            addresses:
                - 10.1.3.166/24
            nameservers:
                addresses: [8.8.8.8, 8.8.4.4]
            routes:
                - to: default
                  via: 10.1.3.1
        br-ex:                  
            dhcp4: true
 
$  netplan apply

## 설정 파일(YAML)에 에러가 없으면, 아무것도 출력하지 않는다.

$

 

 

 

nm-connection-editor 명령

SSH로 접속한 Text Terminal에서는 실행하면 안 되고, 원격 데스크탑(Remote Desktop)으로 접속했거나 Console Monitor를 사용한 경우에만 nm-connection-editor가 동작한다.

 

nm-connection-editor 시작 화면

 

 

게시물 작성자: sejong.jeonjo@gmail.com

 

 

 

반응형

아래 예시는 Linux OS에 Hugepage를 적용하는 절차이다.

##
## /etc/default/grub 파일에서  
## default_hugepagesz, hugepagesz, hugepages, transparent_hugepage
## 항목을 추가 설정한다.
## (아래 예시를 참고)
##

$ cat  /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet default_hugepagesz=1GB hugepagesz=1G hugepages=320 transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

$

##
## 위와 같이 /etc/default/grub 파일을 수정하고,
## grub2 명령으로 설정을 적용한다.
##

## Case: UEFI Mode
$ grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

## Case: Legacy BIOS Mode
$ grub2-mkconfig -o /boot/grub2/grub.cfg

##
## 위와 같이 설정 작업을 마무리했으면, OS를 Reboot하여 설정을 반영한다.
##

$ reboot

+ Recent posts