Ubuntu 서버(23.04)에서 AdGuard Home을 실행하고 라우터를 서버에 연결하여 네트워크 등의 광고를 차단하고 싶습니다. 그러나 포트와 관련하여 다양한 문제가 발생합니다. 특히 포트 53, 67 및 68입니다.
이것이 docker-compose.yml
내가 쓴 것입니다(그러나 podman
대신에 를 사용합니다 docker
):
version: "3.4"
services:
adguardhome:
image: "adguard/adguardhome"
container_name: "adguardhome"
restart: "unless-stopped"
cap_add:
- NET_ADMIN
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "68:68/udp"
- "80:80/tcp"
- "443:443/tcp"
- "443:443/udp"
- "3000:3000/tcp"
- "853:853/tcp"
- "853:853/udp"
- "784:784/udp"
- "8853:8853/udp"
- "5443:5443/tcp"
- "5443:5443/udp"
volumes:
- "./work:/opt/adguardhome/work"
- "./conf:/opt/adguardhome/conf"
명령을 실행했지만 sudo podman-compose up -d
포트 53이 바인딩되어 있다고 불평했습니다. 그래서 다음 단계를 수행했습니다.
내가 시도한 것:
공식 Docker Hub 지침을 따르세요.을 위한
systemd-resolved
.sudo lsof -i :53
디스플레이를 수행하면systemd-resolved
더 이상 포트를 차지하지 않지만libvirt-dnsmasq
차지합니다.
sudo virsh net-edit default
행을 실행하고 추가하여 구성을 편집하십시오<dns enable=no />
.sudo lsof -i :53
아무것도 반환하지 않습니다sudo netstat -tuln | grep 53
.- 명령을 다시 실행하십시오
sudo podman-compose up -d
. 포트 67이 바인딩되어 있다고 표시됩니다.
실행 중인
sudo lsof -i :67
디스플레이libvirt-dnsmasq
포트가 여전히 사용 중입니다.- 비활성화하는 방법에 대한 유용한 리소스를 온라인에서 찾을 수 없습니다. 대부분의 리소스가 상당히 오래되었고 정보가 최신이 아니기 때문에(편집하라는 지시를 받은 파일 중 상당수가 단순히 존재하지 않는 등) 그냥 다음 방법을 사용했습니다.
sudo kill <pid>
- 명령을 다시 실행하십시오
sudo podman-compose up -d
. 포트 68이 바인딩되어 있다고 표시됩니다. 사용을 확인해lsof
보니 사용중인ps aux | grep <pid>
것으로 나타났습니다 .systemd-networkd
- 비활성화하는 방법에 대한 유용한 리소스를 온라인에서 찾을 수 없습니다. 대부분의 리소스가 상당히 오래되었고 정보가 최신이 아니기 때문에(편집하라는 지시를 받은 파일 중 상당수가 단순히 존재하지 않는 등) 그냥 다음 방법을 사용했습니다.
network_mode: host
이 파일에 추가하면docker-compose
다음과 같은 결과가 생성됩니다.
['podman', '--version', '']
using podman version: 4.3.1
** excluding: set()
['podman', 'network', 'exists', 'adguardhome_default']
['podman', 'network', 'create', '--label', 'io.podman.compose.project=adguardhome', '--label', 'com.docker.compose.project=adguardhome', 'adguardhome_default']
['podman', 'network', 'exists', 'adguardhome_default']
podman run --name=adguardhome -d --label io.podman.compose.config-hash=123 --label io.podman.compose.project=adguardhome --label io.podman.compose.version=0.0.1 --label com.docker.compose.project=adguardhome --label com.docker.compose.project.working_dir=/home/tester/containers/adguardhome --label com.docker.compose.project.config_files=docker-compose.yml --label com.docker.compose.container-number=1 --label com.docker.compose.service=adguardhome --network host --cap-add NET_ADMIN -v /home/tester/containers/adguardhome/work:/opt/adguardhome/work -v /home/tester/containers/adguardhome/conf:/opt/adguardhome/conf --net adguardhome_default --network-alias adguardhome -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp -p 853:853/tcp -p 853:853/udp -p 784:784/udp -p 8853:8853/udp -p 5443:5443/tcp -p 5443:5443/udp --restart unless-stopped adguard/adguardhome
Error: cannot set multiple networks without bridge network mode, selected mode host: invalid argument
exit code: 125
podman start adguardhome
Error: no container with name or ID "adguardhome" found: no such container
exit code: 125
나는 헤매고 있다. 무엇을 해야 할지, 왜 일이 이런 식으로 발생하는지 정말 모르겠습니다. 물론 AGH가 작동하도록 하기 위해 시스템의 모든 것을 비활성화할 수는 없습니다.
- 작동 한다면
network_mode: host
내 사용 사례에 단점이 있습니까(다른 컨테이너에서 컨테이너에 액세스할 수 없다는 것 외에)? 127.0.0.1:
포트 앞에 추가해도 아무런 문제가 발생하지 않는 것으로 나타났습니다 . 이것이 가능한 해결 방법입니까? 이에 대한 단점이 있습니까?