L4 환경을 많이 써보지 않은 상태에서 좀 문제를 겪고 있어서 제가 모르는 점에 대한 조언을 얻고자 글을 올립니다.
[가] 라고 하는 L4 장비가 있는데, A 라는 IP 을 가집니다.
[나], [다] 라는 두 대의 리눅스 장비가 있고, 각각 사설IP 로 B 와 C 라는 IP 을 가집니다. 그래서 각각 eth0 에는 B 와 C 라는 IP 을 가집니다.
보통 리눅스에서 저런 환경이 되면, lo:0 라는 걸 만들고 lo:0 에 VIP 라는 이름으로 A 라는 IP 을 넣어두나요?
저는 주로 웹서버 환경 등에서만 써왔는데, 이번에 소켓을 쓰는데 문제가 되네요. 소켓으로 만든 서버 프로그램이 A 라는 IP 을 통해 L4 거쳐서 리눅스 서버로 요청이 들어갔는데, 리눅스 장비에서 값이 나갈 때 B 와 C IP 로 값이 나가서 L4 로 값이 가질 않아서 클라이언트에게 값이 전달되지 않는다고 하네요.
프로그램에서 연결된 소켓 채널에 그냥 값을 write 해주는게 다인데...
통상적으로 lo:0 와 같이 가상 이더넷을 만들어서 하는게 일반적인지, 그리고 보통 이런 환경에서 정상적으로 요청한 이더넷 쪽으로 보내는 옵션 같은게 있는지...있다면 그런 옵션 이름을 보통 뭐라고 부르는지 궁금합니다.
조언 부탁드립니다.
αӶ ؼ... κе ƽô ø Ź帳ϴ.
B C L4 ġ ʰ ̷Ʈ B C A ó ϱ ؼ lo:0 ϴ .
Ƹ Ͻ ->L4 Ʈ ̱ ؼ ϴ , L4 ΰ NAT ϴ.
Ʒ ֽ ... NAT ʰ VIP ̿ ؼ Ϸ ϴµ α Ⱥ...α ľ Ѵٴ°...
ϴ° ƴ϶...츮 ϴ ΰ ƴ϶, ʿ ° 츮 α ٲ ɼ ū... ̷ ǰ? ƹ Half NAT س , B C IP ܺ ƿ Ұ 뿪 ֽϴ.
ǿ ؼ ܺ Ŭ̾Ʈ Ŷ DEST IP A ؼ ϸ, L4 Ŷ ؼ SRC IP Aϰ DEST IP B C ٲ㼭 ٽ ϴ.
SRC IP ڽ IP(B Ǵ C) ϰ, DEST IP A ؼ Ŷ ϴ. L4 SRC IP A ϰ, DEST IP Ŭ̾Ʈ IP ٲ㼭 ٽ մϴ.
Ͻô L4 Ŷ SRC IP A ʰ Ŭ̾Ʈ IP ״ Դϴ.
ٸ , ̷ Source NAT ϴ , 츦 FULL NAT, 츦 HALF NAT ϴ .
Բ Ͻô 찡 Ʒ ۰ .
http://blog.naver.com/PostView.nhn?blogId=ky1004&logNo=30030838930&redirect=Dlog&widgetTypeCall=true
찡 ɼ . L4 ġ ϱ ʿ ٸ ؾ ϴ° ϱ ϰ.
Source NAT(Full NAT) ƴٰ ϰ( ū üε, Half NAT Ϸ ϰ ٲߵȴٰ) ü ̷ Ȳ߽ϴ.
ٸ, ڽŵ ϴ VIP ް return ϴ° Ȯߴٴµ ȵdz. ڱ Ʈũ ƴұ ͳ.
п Ѱϴ. ϴ.
츦 ϱ ִµ, ʿ Ŭ̾Ʈ L4 ġ ġ ʱ Ʈũ Ʈ ϰ, ӵ ϴ.
Ƹ ü Half NAT å ϴ .
ٸ ߽ϴ.
VIP ε ع VIP interface û ؼ...L4 live check ȵȴٰ ϳ. live check eth0 ؼ(װ͵ VIP ö ʸ Ưؼ) Ѵٰ ϳ. ̰ɷ ݳ Ҹ߽ϴ. ̰ ñϳ.
ؼ...α Ʒ ̰ڽϴ(Ȥ ٸ в ɱ).
ּż ϴ.
------------------------------------------------------------------------------------
, ð ø Խù ذ߽ϴ. Bootstrap bind() port Ӹ ƴ϶ hostname Ű ִµ, hostname õ interface θ ϵ binding ־, ɼ ϴ A IP outbount ǵ Ͽϴ.
, и L4 A IP û B IP ǵشٴ Դϴ. A IP B IP eth0 lo:0 ̱ ᱹ ܺ->A->B->Netty ٴ ´µ, Netty->B->ܺ ó Ͽ A ν ߱Ǿϴ. B ܺη ȸ̱ Դϴ.
, Ŀ ߴµ...L4 live Ȯ B ؼ Ѵٰ մϴ. װ͵ lo:0 ö ¿ ϱ bind() A IP θ ¿ B ش Ʈ ȵǼ L4 down Ǵؼ dead ó عٰ ϳ.
ٸ ⺻ Java óǴ , Netty ̷ Ŀ ִ°, ƴϸ A A , B B ϴ ִ ñմϴ. ý Ͼ ϰ ְŵ.