[Docker] iptables vX.X.X (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Docker... 또 너야?

리눅스를 업데이트 하고 재부팅한 어느 날, 갑자기 도커의 컨테이너와 연결이 되지 않는 문제가 발생했다. 알고보니, 모종의 이유로 컨테이너가 자꾸만 다운되고 있었던 것이다. 컨테이너 로그를 살펴보니 다음과 같은 로그가 도배되고 있었다...

iptables v1.8.3 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

대충 'nat' iptables 테이블이 로드되지 않았다는 의미 인 것으로 보인다. 거두절미하고 원인만 얘기하자면, Host 운영체제가 부팅 되면서 ip_tables라는 모듈을 불러오지 않아 생기는 문제라고 한다. 그런데 난 그게 뭔지 모른다... 이 문제는 Host 운영체제에서 다음 명령어를 입력하면 해결된다.

$ sudo modprobe ip_tables

정리하며

필자의 경우에는 도커로 wg-easy라는 컨테이너를 사용하면서 이런 문제가 생겼었는데, 구글을 검색해보니 아무래도 도커를 사용하면 꽤 자주 발생하는 문제인 것으로 보인다...


참고한 문헌 및 글

해결 완료: wg easy docker 시동 오류 : 클리앙
아래와 같은 로그가 나오면서 다시 시작됩니다. wg만의 문제가 아니라 독커 에러인 듯 한데, 어디를 봐야할까요? wireguard | 2022-06-03T01:16:22.387Z Server Listening on http://0.0.0.0:51821 wireguard | 2022-06-03T01:16:22.388Z WireGuard Loading configuration... wireguard | 2022-06-03T01:16:22.389Z WireGuard Configuration loaded. wireguard | 2022-06-03T01:16:22.390Z WireGuard Config saving... wireguard | 2022-06-03T01:16:22.390Z WireGuard Config saved. wireguard | $ wg-quick down wg0 wireguard | $ wg-quick up wg0 wireguard | Error: Command failed: wg-quick up wg0 wireguard | [#] ip link add wg0 type wireguard wireguard | [#] wg setconf wg0 /dev/fd/63 wireguard | [#] ip -4 address add 10.8.0.1/24 dev wg0 wireguard | [#] ip link set mtu 1420 up dev wg0 wireguard | [#] iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; wireguard | modprobe: can’t change directory to ‘/lib/modules’: No such file or directory wireguard | modprobe: can’t change directory to ‘/lib/modules’: No such file or directory wireguard | iptables v1.8.3 (legacy): can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?) wireguard | Perhaps iptables or your kernel needs to be upgraded. wireguard | [#] ip link delete dev wg0 wireguard | wireguard | at ChildProcess.exithandler (child_process.js:383:12) wireguard | at ChildProcess.emit (events.js:400:28) wireguard | at maybeClose (internal/child_process.js:1058:16) wireguard | at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5) { wireguard | killed: false, wireguard | code: 3, wireguard | signal: null, wireguard | cmd: ‘wg-quick up wg0’ wireguard | } wireguard exited with code 1 독커 컴포즈는 아래 링크를 따라 만들었습니다. https://velog.io/@eriol72/WireGuard-를-GUI로-사용해보자-docker-wg-easy