저는 왜 리얼ip를 못불러올까요?
헤놀 dva3221 7.2-u4
역방향프록시: 시놀 자체 이용
인증서: 시놀자체 이용
클플은 dns전용으로 사용입니다.
iptable 스크립트 작성은 적용했습니다.
신뢰할수 있는 프록시에 아래 다 삽입했구요.
아래와 같이 다 넣었는데도 사설 ip로 뜨네요.. 무엇을 빠뜨렸을까요? nginx를 시놀을 사용해서 안되는 것일까요
추가로,
127.0.0.0/8
172.0.0.0/16
192.168.1.0/24
IPv4
- 103.21.244.0/22
- 103.22.200.0/22
- 103.31.4.0/22
- 104.16.0.0/13
- 104.24.0.0/14
- 108.162.192.0/18
- 131.0.72.0/22
- 141.101.64.0/18
- 162.158.0.0/15
- 172.64.0.0/13
- 173.245.48.0/20
- 188.114.96.0/20
- 190.93.240.0/20
- 197.234.240.0/22
- 198.41.128.0/17
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
도커 컨테이너 ip 입니다
제가 질문을 좀 애매하게 했네요.
사설 IP로 출력을 하고 있는 서비스가 무엇인지 궁금해서요.
예를 들어 nginx 서버의 access 로그에 사설 ip만 출력되고 있다는 식으로요.
직접 구현해서 어디서 안 되는지 파악해 보려고요.
wettyoss/wetty:latest 이미지
제가 파악한 바로는 wetty 컨테이너에서 ssh로 host(시놀로지)에 접속할 때 시놀로지의 연결 로그에 wetty 컨테이너의 주소(172.17.0.x)가 찍히는 거죠?
일단 wetty 로그를 보면 시놀로지 역방향에서 x-forwarded-for 헤더로 공인 ip가 잘 넘어 옵니다.
시놀로지 역방향이라서 도커 iptables 스크립트도 필요 없고 신뢰할 수 있는 프록시도 설정하지 않았어요.
wetty가 http 프록시였다면 공인 ip로 잘 찍혔을 거예요.
그런데 wetty는 ssh 프록시죠.
ssh는 tcp 통신이라서 http의 헤더인 x-forwarded-for를 사용할 수 없어요.
tcp에서 x-forwarded-for와 같은 효과를 얻으려면 proxy protocol을 사용해야 하는데요.
tcp 연결을 수립하는 wetty 서버에서 proxy protocol을 지원하는지 찾을 수 없네요.
제가 봤을 때는 wetty로 시놀로지 ssh 연결 로그에 reail ip를 찍을 순 없을 것 같습니다.
nginx 컨테이너 사용하시면 아래를 추가해 보세요.
``` nginx
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
```
추가해 보세요. 단 반드시 컨테이너의 경우에만 사용하셔야 합니다. 아니면 도커 네트워크 대역에서만 하용하도록 변경하셔도 되구요 :)
cmt alert