분명 process가 segmentation fault 상황에서 core file이 dump되어야 하는데, 어디에도 core file이 없는 경우가 있다.
이럴 때는 coredump와 관련한 설정이 안 되어 있는 것이니까, 아래의 내용을 보고 coredump 관련 설정이 잘 되어 있는지 다시 확인해봐야 한다.
core dump file의 size 제한 설정이 있는지 확인
너무 큰 core dump file이 생성되는 부작용을 막기 위해 core file size limit 설정이 존재한다.
(2020년대 이후로는 SSD, HDD가 충분히 커서 이런 core file size limit이 유용한지 모르겠다.)
core file이 수십개가 dump되어도 문제 없을만큼 storage가 크다면, unlimit 설정값으로 바꾸는 것을 권장한다.
## 현재 설정값 확인하는 명령.
$ ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
... (내용 생략) ...
## core file size 제한을 푸는 명령 (무제한 크기로 변경)
$ ulimit -c unlimited
위와 같이 설정하면, 내 login shell 환경에만 즉시 적용되고 Linux 시스템 전체적으로는 아직도 옛날 core file size가 적용된다.
따라서 Linux 시스템 전체에 설정 값을 적용하려면 아래와 같이 limits.conf 파일을 수정해야 한다.
$ cat /etc/security/limits.conf
(... 중간 내용 생략 ...)
* soft core unlimited
(... 중간 내용 생략 ...)
위와 같이 설정하면, 아래와 같이 실제로 core file이 /tmp 폴더에 dump된다.
$ ls /tmp/core.*
/tmp/core.myapp.104618.mynode.1733790395
위 파일 이름에 포함된 "1733790395" 값은 Unix time(또는 epoch time)라고 한다.
이 epoch time을 우리 눈에 익숙한 포맷으로 바꾸려면 아래와 같이 명령을 수행하면 된다.
## Timezone 설정이 UTC이면, 아래와 같이 출력
$ date -d @1733790395
Tue 10 Dec 00:26:35 UTC 2024
## Timezone 설정이 Asia/Seoul이면, 아래와 같이 출력
$ date -d @1733790395
Tue Dec 10 09:26:35 KST 2024
C language, Go(Golang), Netfilter, Netlink를 이용하여 Linux network을 제어하고 모니터링하는 방법을 알아보자~
개념 이해하기: Netfilter hooks into Linux networking packet flows
The following schematic shows packet flows through Linux networking:
Linux Netfilter + C example code
참고 문서: https://pr0gr4m.github.io/linux/kernel/netfilter/ 이론 설명과 함께 잘 동작하는 예시가 있어서 쉽게 이해할 수 있다. 아래는 위 블로그의 끝 부분에 있는 HTTP Traffic만 선별하여 Drop하는 예제 코드인데, 그냥 이 예제 코드만 봐도 이해할 수 있을 것이다.
- 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
예시: 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
Anycast Address
Anycast 통신은 ‘1:가장 가까운 1’간의 통신방식이라고 정의할 수 있다.
동일한 주소를 가지는 여러 목적지 장비들 중 출발지 장비와 가장 가까운 장비가 응답을 하는 통신방식이다. 이러한 통신방식은 멀티캐스트와 유사하지만 멀티캐스트의 경우 동일 그룹에 소속된 장비들이 응답을 하는 반면, 애니캐스트의 경우는 동일 주소를 가지는 장비들 중 가장 가까운 장비 하나만 응답을 한다는 차이가 있다.
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