CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): qkim ( NGI Lab. )
날 짜 (Date): 2002년 7월  9일 화요일 오후 04시 35분 20초
제 목(Title): Re: 이거 말이 될까요?



> 1. 
> 아마 그 공유기 업체에서는 NAPT(NAT-PT)와 NAT를 동시에 
> 구현하려고 하는 것으로 보이는데요.(정확히 NAT는 아니지만.. ^^)

이것은 현재의 IP 공유기가 그런 기능을 제공하는 거죠.
포트 포워딩만 제대로 되면... 사설망에서 인터넷과의 
통신에 아무런 문제가 없나요?

기존 IP 공유기에서 사설IP를 가진 애가 
밖에 있는 서비스를 이용할 때..
서비스 종류에 따라 안 되는 게 있다던데..
포트 포워딩만 제대로 제공되면 해결되는 건가요?

(어차피.. TCP/UDP port를 달고 움직일테니.. 
그럴 것 같기는 합니다만...)

> PCa는 공인 IP, PCb, PCc...등은 사설 IP를 이용한다고 할때.. 
> PCb(사설 IP)가 외부로 접근하는 경우 NAPT를 이용해서 서비스를 
> 하고.. (뭐라 부르는지는 모르겠지만) service list에 넣어 
> 관리하도록 할꺼라 보여집니다.(NAPT의 구현상..)
> 만약 PCa가 서비스를 이용한다고 하면..NAPT의 service list에 
> 넣어둘수도 있고 넣지 않을수도 있겠습니다.
> (넣지 않는편이 단순할 것 같은데..).
> 외부에서 공인 IP로 packet이 왔을 경우.. 
> boxX는 service list를 뒤져보고 내용이 없으면 
> PCa로 그대로 던져주면 되겠네요. (NAPT구현에서는 그냥 
> drop해버리던가요? 아님 위쪽 계층으로 올릴수도 있겠군요. )
> PCa에 대해서 boxX는 거의 filter를 가진 bridge가 되는군요.

네, 논리상 맞다고 보는데요..
제가 원하는 것은 가능한한 닭짓을 안 하고 할 수 있는
방법을 찾는 것이거든요. :)

즉, 기존에 있는 것을 잘 버무려서 해결할 수 있는 방안.. :)

> 여기서 몇가지..
> - PCa의 Routing table. 

이것은 X가 DHCP 응답을 할 때 default gateway로 
ADSL 모뎀 너머에 있는...
PPPoE로 받아온 정보에서 뽑아서 전달하면 PC의 
routing table이 만들어 질 것 같은데요..

> - boxX의 routing table과 같이 구성하면 정상적으로 
>   보내지지는 않겠죠? 
>   netmask를 어떻게 주던..약간의 편법이 필요합니다. 

X가 bridge로 동작하게 할려면.. promisc 모드로 설정해야 합니다.
그래서 PC에서 오는 모든 패킷이 
(예를 들어, eth0에서 들어오는..) eth1으로 통과해서 
ADSL 모뎀을 거쳐 ISP로 들어갈 것이라고 생각합니다.

따라서 X의 routing table이나 PC의 routing table이나
똑같아도 될 것 같습니다.

>   최소한 boxX가 PCa의 arp request에 대한 응답을 잘 해줘야 하겠지요.

그렇기도 하겠군요. 

> - boxX가 PCa로 패킷을 던져줄때.. 
>   arp에 문제가 생기는군요. 
>   arp가 내부 if에 대해서만 
>   bind되도록 하는 것도 쉽지 않을 것 같고.. 
>   단지 mac address만 바꿔치고 그냥 내려보내는 방법을 
>   고민하는게 낫지 싶네요.

지금 이런 꿍꿍이에 적당한지는 좀 더 검토해야 하지만..
MAC 주소에 대한 NAT 역할을 해주는 게 있습니다.
원래는 Ethernet용 방화벽인데.. 
이런 일도 해줍니다.

http://sourceforge.net/projects/ebtables/
http://users.pandora.be/bart.de.schuymer/ebtables/

제공 기능은... 
- ethernet protocol filtering
- MAC address filtering
- simple ip header filtering
- arp header filtering
- in/out interface filtering (logical and physical device)
- MAC address nat
- logging
- frame counters
- ability to add, delete and insert rules; flush chains; zero counters
- brouter facility

> - 그러기 위해서는 PCa의 초기화시에 또는 boxX의 초기화시에 
>   PCa의 MAC address를 알고 있어야 한다는 말이 됩니다. 
>   PCa가 DHCP를 이용하기 전부터 알고 있는게 맞겠군요. 
>   커널쪽에 예외사항이 자꾸 생기는군요. 훔. 
>   PCa가 하나뿐이니 머리를 잘 굴리면 단순하고 
>   쌈빡하게 해결이 될 것 같기도 한데..

네... data link layer issues에서 고민이 
좀 더 필요한 것 같습니다.

일단 실험을 해봐야.. 
좀 더 구체적인 해답을 쥘 수 있을 것 같은데..
마음대로 만질 수 있는 PC가 없군요. 흑흑...

시키라고라?
세상 일이 그렇게 마음대로 되는 게 아니랍니다. -_-

버기군 같은 사람이야.. 어.. 이거 재밌겠는데..하면서 해볼까.. :)

>- boxX(NAT장비)는 IP를 사설/공인 2개의 IP를 갖고 있어야 하는데.. 
>  dhcp쪽을 제외한 모든 부분에서. 사설IP(내부if)쪽으로 오는 
>  packet만을 상위 계층으로 올리도록 해야 할 것 같습니다. 
>  NAT장비의 web-management는 내부에서만 가능하게 된다는..

아니오. 제 생각은.. 

box X는 NAT 올리지 않고..
eth0와 eth1에 대해 bridge로서 promisc 모드로 bypass 시키고 
PC와 X의 network information을 둘 다 똑같이 주고..
remote server A로부터 오는 패킷만 X가 취하고..
PC로 가지 못 하게끔 filtering하겠다는 것입니다.
나머지 패킷들은 PC로 전부 bypass시키고요.

> 마지막으로 질문.
> PCa가 왜 공인 IP를 가져야 하죠? 
> 그냥 사설 IP에 NAT장비가 대부분 port에 대한 fordwarding을 
> 해주는거로 부족한가요? 어차피 공인 IP를 가지려고 하는 
> 장비는 하나뿐인데 ALG를 일일이 만들 필요는 없지 싶어서요.

PC에 대해 사설 IP 할당하고 
X에서 NAT 역할을 훌륭하게 해줄 수 있다면 
아무런 고민이 필요없습니다. 물론 닭짓없이.. :)

리눅스에 있는 NAT가 port forwarding도 제공하나요?
제공한다면 한시름 놓을 수는 있는데..
그래도 ALG는 만들어 줘야 고객을 위한다고 할 수 있을듯 
싶습니다.

application protocol header 속에 들어가 있는 source IP는 
사설 IP일텐데...
밖으로 나갈 때 ALG가 고쳐줘야 제대로 돌테니 말입니다.

노가다 안 하고 할 수 있는 방법을 찾을려니..
이 고민을 하는 것이랍니다. 키득키득...

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.