[Synology] 시놀로지 도커 nginx proxy manager에서 IP 전달 제대로 시키기

[Synology] 시놀로지 도커 nginx proxy manager에서 IP 전달 제대로 시키기

사무실에서 굴리는 그누보드 사이트 몇개를 시놀로지 기본 웹스테이션을 사용하다가, 데이터 통백업의 편리함 등 유지보수의 편의, 최신 버전의 사용 등의 이유로 도커로 이전을 시켰습니다.

몇가지 문제가 있었지만, 대부분 수정을 했는데, 마지막, IP 전달이 제대로 되지 않는 문제가 생겼습니다.

동일한 docker-compose를 사용했을 때 다른곳에선 제대로 됐는데… 시놀로지에서만 안되니 환장할 노릇이었습니다.

도커 IP 전달, 진짜 IP 등 관련 키워드로 검색을 아무리 해도 안나왔어요.
결과적으론, 도커의 문제가 아니고 시놀로지 문제였습니다 -_-

https://www.uname.in/19
이 방법도..

https://blog.dalso.org/home-server/2239
이 방법도..

이 방법까지도..

그래도 왠지 서버포럼쪽에는 해결법이 있을 것 같아 실마리라도 잡아보려고 글을 올렸는데, 역시 있을 줄 알았습니다.

시크하고 아름다운 답변

https://svrforum.com/nas/366302

네, 이 방법으로 해결했습니다.

작업 스케줄러에 bootup 트리거, root 권한으로 아래 스크립트를 넣어주면 됩니다.

#!/bin/bash
currentAttempt=0
totalAttempts=10
delay=15

while [ $currentAttempt -lt $totalAttempts ]
do
	currentAttempt=$(( $currentAttempt + 1 ))
	
	echo "Attempt $currentAttempt of $totalAttempts..."
	
	result=$(iptables-save)

	if [[ $result =~ "-A DOCKER -i docker0 -j RETURN" ]]; then
		echo "Docker rules found! Modifying..."
		
		iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
		iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL ! --dst 127.0.0.0/8 -j DOCKER
		
		echo "Done!"
		
		break
	fi
	
	echo "Docker rules not found! Sleeping for $delay seconds..."
	
	sleep $delay
done

처음 적용할 땐 실행버튼으로 한번 돌려주세요.

와 정말 이거 하나때문에 3일을 끙끙 앓고 있었습니다.

{{#is "post"}} {{/is}}