이 모든 일은 한 기사에서 비롯됐다. 블로그 글도 기사라 할 수 있는지 모르겠지만.
요즘엔 광의로 모든 매체의 글을 ‘기사’라고 해도 크게 틀린 표현은 아니란 생각이 들긴 한다.
아무튼, 그 글에서, Bitwarden 이란 비밀번호 관리자를 알게 됐고, 흥미를 느껴 설치를 해보려던 참이었다. 여기에 관한 내용은 설치를 한 뒤 다른 글에 써보기로 하고, 이 글에선 그에 얽힌 ‘꽃삽질’에 대해 기록한다.
왜 이런 일이 이리 자주 벌어지는지는.. 그 누가 알까.
시중에 나와있는 비밀번호 관리자는 꽤 많다. 지금은 기억이 가물가물한데, 예전 Palm 시절이었나, Windows Mobile 시절이었나부터 쓰던 ‘뭔가’가 있었다. 아마도 안드로이드로 넘어와서도 한동안은 그걸 썼었는데.. (아.. 그게 이름이 뭐였더라?)
찾아냈다! Alternative to 의 도움을 받아 예전 기억을 끄집어낼 수 있었다. 이미 잊혀진 상품이 됐는지, ‘Load more apps’ 를 두 번이나 해야 출력이 됐다. 아무튼, 그 제품은 SplashID 였다.
Alternative to 에 봐도 저렇게 많은 프로그램들 중에서, 현재 내가 쓰고 있는 프로그램은 mSecure 라는, 전혀 유명하지 않은 상품이다. 게다가 이건 리눅스 지원이 되지 않는다. Android, iOS, macOS, Windows 에서만 쓸 수 있다.
그럼에도 불구하고 구매한 이유는, 로컬 동기화가 된다는 점과 유형 정의가 가능하고, 사용자 필드(Field)를 만들 수 있기 때문이다. 생각보다 ‘유형’ (Type, 또는 Category 등)을 지원하는 프로그램이 별로 없고, 사용자 필드도 마찬가지다.
그 때문에, 리눅스 지원이 되지 않는다는 내겐 아주 큰 불편함을 무릅쓰고도 사용하고 있는 중인데..
그러다가 Bitwarden 을 알게 됐고, 한번 써볼까? 하는 중이다.
이걸 눈여겨 본 이유가 하나 있으니, 바로 (일종의) 로컬 동기화가 가능하기 때문이다. 대신 mSecure 처럼 기기간 동기화가 되는 건 아니고, 서버가 하나 있어야 한다.
서버야 뭐, 훌륭한 걸 만들어놨으니 그걸 써주면 되는데, 이를 위해선 Docker 가 필요하단다.
작년인가부터 관심은 많아서 글도 찾아보고, 책도 보고 했는데, 아직까지 개념이 잘 잡히지 않는다. Virtual Machine(Virtual Box 류의)과 유사한 개념이라고는 하지만, 뭔가 또 다르다고 하고.. 직접 써본 적이 없으니 글로만 보면 그저 뜬 구름 잡는 소리로 밖에 들리질 않네.
하여, Docker 공부도 할 겸, Bitwarden 을 사용해보기로 했다.
참고로, warden 은 감시자, 관리인, 보관자 등을 뜻한다고 한다. Bit 은 2진법의 그 Bit 일테고, 따라서 결국 비밀번호 관리자라는 뜻이 된다고 볼 수 있다.
Docker 는 우분투에서 그냥 바로 설치를 할 수도 있다. 하지만! 최신판을 좋아하는 얄팍한(?) 마음가짐에서, 내 손가락과 눈은 Docker 공식 설치 문서로 향했다.
문서대로 따라하면 설치에는 아무런 문제가 없다.
그런데!! 실행에서 난관에 부딪혀버렸다.
$ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2020-04-14 10:50:19 KST; 49min ago Docs: https://docs.docker.com Process: 1467 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited Main PID: 1467 (code=exited, status=1/FAILURE) Apr 14 10:50:17 testserv systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Apr 14 10:50:17 testserv systemd[1]: docker.service: Failed with result 'exit-code'. Apr 14 10:50:17 testserv systemd[1]: Failed to start Docker Application Container Engine. Apr 14 10:50:19 testserv systemd[1]: docker.service: Service hold-off time over, scheduling restart. Apr 14 10:50:19 testserv systemd[1]: docker.service: Scheduled restart job, restart counter is at 3. Apr 14 10:50:19 testserv systemd[1]: Stopped Docker Application Container Engine. Apr 14 10:50:19 testserv systemd[1]: docker.service: Start request repeated too quickly. Apr 14 10:50:19 testserv systemd[1]: docker.service: Failed with result 'exit-code'. Apr 14 10:50:19 testserv systemd[1]: Failed to start Docker Application Container Engine.
이렇게 뻥뻥 문제가 터져버린다.
검색 결과, Docker 실행 환경 검사 프로그램을 실행해보라는 글을 읽고, 그걸 돌려봤더니..
./check-config.sh warning: /proc/config.gz does not exist, searching other paths for kernel config ... info: reading kernel config from /boot/config-5.3.0-46-generic ... Generally Necessary: - cgroup hierarchy: properly mounted [/sys/fs/cgroup] - apparmor: enabled and tools installed - CONFIG_NAMESPACES: enabled - CONFIG_NET_NS: enabled - CONFIG_PID_NS: enabled - CONFIG_IPC_NS: enabled - CONFIG_UTS_NS: enabled - CONFIG_CGROUPS: enabled - CONFIG_CGROUP_CPUACCT: enabled - CONFIG_CGROUP_DEVICE: enabled - CONFIG_CGROUP_FREEZER: enabled - CONFIG_CGROUP_SCHED: enabled - CONFIG_CPUSETS: enabled - CONFIG_MEMCG: enabled - CONFIG_KEYS: enabled - CONFIG_VETH: enabled (as module) - CONFIG_BRIDGE: enabled (as module) - CONFIG_BRIDGE_NETFILTER: enabled (as module) - CONFIG_NF_NAT_IPV4: missing - CONFIG_IP_NF_FILTER: enabled (as module) - CONFIG_IP_NF_TARGET_MASQUERADE: enabled (as module) - CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: enabled (as module) - CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled (as module) - CONFIG_NETFILTER_XT_MATCH_IPVS: enabled (as module) - CONFIG_IP_NF_NAT: enabled (as module) - CONFIG_NF_NAT: enabled (as module) - CONFIG_NF_NAT_NEEDED: missing - CONFIG_POSIX_MQUEUE: enabled 후략..
NAT 관련 커널 모듈이 두 개나 빠져있었음을 알게 되었다. 실행 환경은 우분투 서버 18.04 이고, VBox 에 설치되어 있다.
왜??
그리하여 꽃삽질은 시작되었다. 커널/모듈 관련 꾸러미(linux-image-*)를 다시 설치해보기도 하고, 이리 저리 뒤지고 했는데, 답이 보이지 않았다.
또, 관련 프로그램인 ufw 를 돌리니 이런 오류가 나왔다.
$ sudo ufw status ERROR: problem running iptables: modprobe: FATAL: Module ip_tables not found in directory /lib/modules/5.3.0-46-generic iptables v1.6.1: can't initialize iptables table `filter': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.
보통 이런 오류가 나왔을 때, 저 문구 그대로 구글 검색을 하면, 해결방법을 그리 어렵지 않게 찾을 수 있다. 저런 문제가 나한테만 생겼을 리도 없고, 내가 1등을 할 리도 없기 때문인데.. 이 문제는 달랐다.
비슷한 경우는 있었지만, 그건 Raspberry Pi 류의 기기에서 발생한 문제였고, 해결이 된 듯 했다.
ip_tables, 즉, ip_tables.ko 가 없어서 ufw 가 제대로 작동하지 않는다는데, 도대체 뭘까? 왜 없을까? 어떻게 하면 설치할 수 있을까?
이리 저리 고민하다가, 커널 모듈이 들어있는 다음 디렉토리를 살펴봤다.
$ ll /lib/modules/5.3.0-46-generic/kernel/net/ipv4/ total 24 drwxr-xr-x 2 root root 80 Apr 13 23:09 ./ drwxr-xr-x 17 root root 340 Apr 13 23:09 ../ -rw-r--r-- 1 root root 9513 Mar 31 11:40 gre.ko -rw-r--r-- 1 root root 9961 Mar 31 11:40 udp_tunnel.ko
흠?
뭔가 많이 허전하다. 듬성듬성도 아니고, 그야말로 휑~~ 하니.
ip_tables.ko 는 당연히 없다.
다른 18.04 서버에서 확인해봤다.
$ ll /lib/modules/5.3.0-46-generic/kernel/net/ipv4/ total 468 drwxr-xr-x 1 root root 712 Apr 13 23:37 ./ drwxr-xr-x 1 root root 586 Apr 13 23:37 ../ -rw-r--r-- 1 root root 16401 Mar 31 11:40 ah4.ko -rw-r--r-- 1 root root 23049 Mar 31 11:40 esp4.ko -rw-r--r-- 1 root root 10985 Mar 31 11:40 esp4_offload.ko -rw-r--r-- 1 root root 25217 Mar 31 11:40 fou.ko -rw-r--r-- 1 root root 9513 Mar 31 11:40 gre.ko -rw-r--r-- 1 root root 25721 Mar 31 11:40 inet_diag.ko -rw-r--r-- 1 root root 9617 Mar 31 11:40 ipcomp.ko -rw-r--r-- 1 root root 36697 Mar 31 11:40 ip_gre.ko -rw-r--r-- 1 root root 20361 Mar 31 11:40 ipip.ko -rw-r--r-- 1 root root 28449 Mar 31 11:40 ip_tunnel.ko -rw-r--r-- 1 root root 19249 Mar 31 11:40 ip_vti.ko drwxr-xr-x 1 root root 884 Apr 13 23:37 netfilter/ -rw-r--r-- 1 root root 9289 Mar 31 11:40 raw_diag.ko -rw-r--r-- 1 root root 14689 Mar 31 11:40 tcp_bbr.ko -rw-r--r-- 1 root root 10393 Mar 31 11:40 tcp_bic.ko -rw-r--r-- 1 root root 12665 Mar 31 11:40 tcp_cdg.ko -rw-r--r-- 1 root root 9345 Mar 31 11:40 tcp_dctcp.ko -rw-r--r-- 1 root root 7569 Mar 31 11:40 tcp_diag.ko -rw-r--r-- 1 root root 7169 Mar 31 11:40 tcp_highspeed.ko -rw-r--r-- 1 root root 9473 Mar 31 11:40 tcp_htcp.ko -rw-r--r-- 1 root root 7625 Mar 31 11:40 tcp_hybla.ko -rw-r--r-- 1 root root 8601 Mar 31 11:40 tcp_illinois.ko -rw-r--r-- 1 root root 8177 Mar 31 11:40 tcp_lp.ko -rw-r--r-- 1 root root 11793 Mar 31 11:40 tcp_nv.ko -rw-r--r-- 1 root root 6057 Mar 31 11:40 tcp_scalable.ko -rw-r--r-- 1 root root 9897 Mar 31 11:40 tcp_vegas.ko -rw-r--r-- 1 root root 7161 Mar 31 11:40 tcp_veno.ko -rw-r--r-- 1 root root 7513 Mar 31 11:40 tcp_westwood.ko -rw-r--r-- 1 root root 7233 Mar 31 11:40 tcp_yeah.ko -rw-r--r-- 1 root root 10753 Mar 31 11:40 tunnel4.ko -rw-r--r-- 1 root root 11697 Mar 31 11:40 udp_diag.ko -rw-r--r-- 1 root root 9961 Mar 31 11:40 udp_tunnel.ko -rw-r--r-- 1 root root 8361 Mar 31 11:40 xfrm4_tunnel.ko
이런..???
ip_tables.ko 는 netfilter 디렉토리 아래에 있고, 여기선 ufw 가 제대로 돌아가고 있었다.
아.. VBox 에 우분투 서버가 3개가 있는데, 하필이면 문제가 있는 이 서버에 Docker 를 설치해서 이런 꽃삽질로 빠지다니!!
VBox 에 설치된 서버들은 그냥 연습용이었는데, 아마도 이런 저런 장난질(?)을 하다가 시스템이 불안해진 모양이다.
허허허허허허허허!!!
제대로 작동하는 우분투 서버(18.04)에서 Docker 를 설치(저장소 추가), 실행했더니, 아무런 이상도 없었다.
아 SS!!!!
그렇다고 해도, 왜 커널 모듈 재설치는 안되는 걸까? 이건 꾸러미 설치의 문제가 아닌건가? 도무지 알 수가 없네 그려.