• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글
질문

mac Docker 에서 Client 의 real ip 를 받아오는방법질문

DDOCCKER 359

0

2

A 라는 클라이언트가 -> C라는 서버에 요청을 보내면 C라는 서버에서 A 의 reali -ip 를 확인하고싶습니다.

 

C라는 서버는 B라는 노트북에설치된 도커에서 컨테이너로 띄워져있는상태입니다. 포트포워딩은 됐구요.

 

하지만 C라는 서버에서 request.client.host 를 사용하여 IP 를 확인해보면 B라는 노트북에서 사용하는 공인 wifi address 와 container ip 만나오는 상황입니다..

 

제생각에 HTTP 요청은 A -> public B IP address(wifi public ip) -> private B ip address (wifi private ip) -> docker container IP 로 전달이 되게 되어  B -> C 로 요청이 오는거라  B 혹은  Docker 내에서 NAT 때문에 C컨테이너 ip 가 반환되는거라 생각중입니다.

 

이부분을 어떻게 해결할수있을까요? 이전에 시놀로지 docker 글을 봤는데 조금 다른것같습니다.

 

OS : m1 mac

container os : alpine

framework : fastapi 0.95

 

B가받은 요청을 별도의 필터링없이 바로 컨테이너로 전달을 해주어야 A 의 real ip 가나올거같은데 방법을 모르겠습니다

mac 이라 --network host 옵션도 먹히지않는상태라

 

고수님들 답변부탁드리겠습니다.

 

 

Tags
신고공유스크랩
2
profile image 1등
ExpBox 2023.05.29. 15:58

글세요. 이럴때는 프록시 계열에서 x-forwarded-for 헤더가 정상적으로 작동하는지, 도커 컨테이너 내부에서도 동일한 설정이 되어있는지 확인해보셔야할 것 같습니다.

저의 경우 mac은 아니지만 jupyter lab을 서버에 올려 사용할때 그런 증상이 있었습니다. HAProxy에서 x-forwarded-for 헤더 체크했는데도 ip가 정상적으로 나오지 않았죠. 그래서 이래저래 해보다가 jupyter lab의 config 파일에 헤더를 추가하는 옵션이 기본이 꺼져있어서 켜도록 설정을 바꿨더니 리얼 ip가 정상적으로 나왔습니다. 이 부분 확인 해보시는게 좋을 것 같아요.

 

원하시는 답이 아닐 확률이 높겠지만 제가 경험했던 일과 유사하여 혹시나 도움이 될까 싶어 적어놓습니다 ㅎㅎ

2등
마이크로서버 2023.06.03. 23:03

위에 하신 이야기가 맞습니다. 우선 도커 컨테이너에서 x-forwarded-for 해더 지원하는지 보아야 하실거 같습니다. 저는 뭐 이쪽 하는 사람은 아닌데... 사용하는 tvheadend에서도 이 옵션이 있더라구요. 끄면 리버스 서버의 내부 ip가 뜨고 켜면 외부 주소가 (리얼 IP가) 뜹니다. 시놀로지 치면 '신뢰 할수 있는 프록시'가 되구요. 해당 서버 아니고 NPM 같은 리버스 서버에서 아무리 설정해 봐야 안되더라구요. 

 

snap144.jpg

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story

본 게시판은 서버구축 게시판과 통합되었습니다.

서버구축 게시판 이동하기