
도움을 주셔서 감사합니다이전 스레드, 특정 문제를 찾았지만 근본적인 문제를 해결하는 방법을 잘 모르겠습니다.
이 문제를 요약하자면: 내 서버의 Docker가 어떤 방식으로든 iptable을 손상시키는 것 같습니다. 이 버그/기능이 기록되었습니다.여기그리고거기. 이는 해당 서버의 Wireguard 인스턴스가 서버와 동일한 로컬 네트워크에 있을 때 작동하지 않음을 보여줍니다. 다음과 같은 이유로 범위를 좁힐 수 있었습니다.
- 문제 없이 동일한 네트워크에 동일한 구성(도커 제외)을 가진 두 개의 다른 서버가 있습니다.
- 해당 서버에서 도커를 비활성화하자 문제가 사라졌습니다.
이는 문제가 /etc/wireguard/wg0.conf
iptables가 구성되지 않음으로 귀결된다는 것을 의미합니다.
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
/var/lib/docker/
폴더를 다른 드라이브로 옮긴 후 문제가 발생했습니다. 이를 위해 나는 다음을 수행했습니다.
- 편집
/usr/lib/systemd/system/docker.service
:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
다음으로 변경됨ExecStart=/usr/bin/dockerd --data-root [New folder] -H fd:// --containerd=/run/containerd/containerd.sock
- 심볼릭 링크를 생성했습니다.
ln -s [New folder] /var/lib/docker
직감적으로 봤을 땐내 문제를 해결하기 위한 두 가지 옵션:
- 위 두 링크의 해결 방법 중 하나를 사용하세요. 솔직히 말해서, 나는 이러한 설명 중 일부를 완전히 이해했는지 잘 모르겠습니다. 또한 이 방법으로 변수를 추가할 수 있는지 확실하지 않기 때문에 제안된 솔루션( 에 추가) 중 하나가 작동할지 확실하지
ExecStartPost=
않습니다/usr/lib/systemd/system/docker.service
.%i
/var/lib/docker
이동 중인 항목을 넣는 대신 설명할 수 있는 다른 방법을 찾아보세요/usr/lib/systemd/system/docker.service
.
누구라도 그랬을 거야이에 대한 제안이 있으십니까?내가 뭐 놓친 거 없니?
감사합니다!
답변1
운영 체제에서 기존 유닛 파일을 변경하려면 [1]을 사용하는 것이 가장 좋습니다 sudo systemctl edit whatever.service
. 원본 파일을 편집하면 패키지 업데이트가 중단됩니다.
그런데 심볼릭 링크를 생성했다면 왜 유닛 파일을 변경해야 할까요?
이전 데이터 디렉터리의 내용을 새 디렉터리로 복사해 보세요. 뭔가 빠진 경우.
내 서버의 경우 나머지 배포 구성과 더 잘 작동하도록 패치가 적용될 수 있기 때문에 docker.io 또는 기타 외부 설치가 아닌 배포판에서 소프트웨어를 설치하는 것을 선호합니다. 내가 선택한 배포판은 podman
나에게 꽤 잘 작동합니다. .docker
docker
[1]https://www.2daygeek.com/linux-modifying-existing-systemd-unit-file/