HAProxy Transparent

HTTP 패킷에 X-Forwarded-For 헤더 추가하여 Client Source IP 식별하는 방법 말고, HAproxy에서 백엔드 서버에 인입되는 IP를 Client Source IP로 변조하여 보낼 수 있다.

HAproxy Transparent 기능을 사용하면 된다.

Transparent Proxy 설정

HAproxy.cfg 수정

Transparent를 구현하려면 root로 실행해야한다고 함 setcap으로 여러가지 권한을 haproxy로 부여하였는데 안되어서 root로 실행시킴

[root@HAproxy01 ~]# vi /etc/haproxy/haproxy.cfg
global
    user        root
    group       root
[...]  [...]
frontend test_frontend
  mode tcp #http 모드에서는 Transparent 지원 안됨   
  bind 1.1.1.1:80 transparent
[...]  [...]
backend test_backend
  source 0.0.0.0 usesrc clientip
[...]

firewall-cmd 수정

라우팅 수정

rc.loacl 등록

서버 재부팅 시 위 라우팅 없어지므로 rc.local에 명령어 넣어서 부팅 시 위 라우팅 넣을 수 있도록 한다.

Backend 서버 게이트웨이 수정

192.168.100.10 ← HAproxy IP로 변경

ICMP Redirection 끄기

동작 확인

XFF헤더를 넣지않아도 Soruce IP가 변경된다

주의사항 동일한 서브넷에 존재하는 서버가 VIP로 요청할 때는 동작 안됨

Last updated