-
squid proxy 를 활용한 object storage 접근 제어HOWTO 2020. 1. 29. 09:37
특정 IP 만 object storage 에 접근하도록 설정하고 싶을 때 squid proxy 를 활용할 수 있다.
아래 링크에도 나오지만 폐쇄망에 존재하는 서버들이 object storage 또는 Yum repo 에 접근해야 할 때 참고할 수 있는 구성이다.
설치와 구성방법은 간단하다. 먼저 squid proxy 용도로 사용할 서버를 생성하고 object storage 에 접근할 수 있도록 Security Group 을 설정하고 아래와 같이 squid proxy 패키지를 설치한다.
필자의 경우에는 네이버클라우드플랫폼에 서버를 만들었고, object storage 에 접근할 때 squid proxy 를 통과하는지 확인하는 테스트 환경을 구성했다.
1. Client 서버와 Squid Proxy 서버 생성
- Client 서버 (squid proxy 를 통해 object storage 에 접근해야 하는 서버) : 10.45.XX.XX
- Squid proxy 서버 : 10.41.XXX.XXX
- object storage endpoint : kr.object.ncloudstorage.com
2. squid proxy 패키지 설치 (CentOS7 사용)
# yum install epel-release -y
# yum install squid -y
# systemctl start squid
# systemctl enable squid
3. squid proxy 설정
# vi /etc/squid/squid.conf
->> 아래와 같이 룰 추가
-
-
acl localnet src 10.45.XX.0/24 # client server // squid proxy 를 통해 object storage 접근을 시도하는 서버 IP (source)
-
acl s3 dstdom_regex .*object\.ncloudstorage\.com // ncloud object storage 접근 룰 허용
-
http_access allow localnet s3 //http access 허용
-
>> 설정 예제
4. Client 서버에 proxy 설정
http , https 프로토콜에 대해서는 squid proxy 서버로 통신할 것에 대한 설정을 추가함
squid proxy 는 3128 포트로 통신하기 때문에 squid proxy 서버의 security group 에 3128 inbound 가 허용되어야 한다.
또한 proxy.sh 설정 이후 ssh 로그아웃/로그인을 다시해야 export 설정이 적용된다.
# vi /etc/profile.d/proxy.sh -> proxy.sh 없을 경우 신규로 생성
-
아래와 같이 룰 추가
-
-
export http_proxy=http://10.41.1XX.1XX:3128
-
export https_proxy=http://10.41.1XX.1XX:3128
-
이제 squid proxy 사용을 위한 설정은 완료되었다. client 서버에서 object storage 로 접근할 때 squid proxy 를 통과하는지 확인해 보도록 한다.
Client 서버에서 object storage 에 업로드 한 파일을 Curl 로 호출해 본다.
# curl -v https://kr.object.ncloudstorage.com/bucketXX/vpntest/index.html -l
object storage 의 주소를 호출했으나 proxy 서버인 10.41.1XX.1XX IP 로 접속을 시도한 후 http proxy tunnel 을 통해 object storage 에 접근하는 것을 확인할 수 있다.
Squid proxy 서버에서 access log 를 확인해 보면 client 서버 IP 인 10.45.XX.XX 에서 squid proxy 에 접근한 로그를 확인할 수 있다.
# tail -f /var/log/squid/access.log
반응형'HOWTO' 카테고리의 다른 글
CentOS7 Apache ssl 인증서 적용 그리고 80 to 443 redirect (0) 2020.06.05 Kubernetes CrashLoopBackOff exit0 발생할 때 (0) 2020.01.31 Kubernetes 에서 Wordpress + MySQL 구성하기 (Persistent Volume) (2) 2019.01.09 MySQL DB replication 구성하기 (2) 2018.12.29 Let's Encrypt 에서 ssl 인증서 발급 받기 (0) 2018.12.27