프로그래밍/운영체제

[리눅스] 다중 NIC에서 다중 Network 라우팅 문제 해결하기

포도알77 2019. 3. 19. 08:31
 다중 NIC(=네트워크 인터페이스 카드, 랜카드, RJ45...)에서 다중 Network를 사용할때 문제가 발생한다. 


 엄청 당연하게 랜카드가 여러개면, 해당 랜카드로 들어온 데이터를 당연히 그쪽으로 다시 보내는줄 알았지만, 그렇지 않단다. 


 대부분의 운영체제에서는 별도의 설정이 없으면, default gateway로 응답을 보낸다.  



 지금 내가 운영중인 서버 컴퓨터에는 NIC가 4개있고, 그중에서 1개는 공인 IP(고정), 나머지 1개는 내부망 라우터에서 제공하는 동적 IP를 적용했다. 

 근데 조금 특이한 환경이다. 

 우선 다른말로 하면, 내부망 IP Netmask가 2개이다. 192.168.0.X과 192.168.1.X처럼 

 [ 공인 동적 IP <=>  Router 1 <=> Router2 <=> Server #1 <=> 공인 고정 IP ] 

 당연히 Router 1에도 PC가 설치되며, Router2가 제공하는 사설망이 내부망이다.  



 즉, 서버 컴퓨터는 공인 IP(이하 111.111.111.111)과 Router2에서 할당된 사설 IP(192.168.1.2)을 동시에 가지며, 네트워크 설정 당시의 Subnetmask에 따라서 각각의 Gateway로 보낸다. 


 만약 내부망 구성을 라우터 1개로 했다면, 별로 고민을 안했을것이다. 하지만 이렇게 서로 다른 대역 (사설망)을 가지는 2개의 네트워크를 연결해야했기 때문에 Router1의 PC들과 Router2의 PC들은 통신할 수 없다. 


 서버에서 192.168.0.1로 보낸 데이터는 192.168.1.2의 Subnet(255.255.255.0)을 만족하지 못해서, 바로 공인 고정 IP를 타고 나가버린다.


 따라서 서버에 192.168.1.2로 오는 모든 192.168.0.X대역을 다시 192.168.1.2 게이트 웨이로 던져버린다. 


 그러면 자연스럽게 192.168.0.X 대역의 패킷도 다시 192.168.1.2의 게이트웨이를 타고 라우터 1의 대역으로 날아간다. 


 코드로는
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.1

 즉 192.169.X.X에서 온 패킷은 마스크 255.255.255.0으로 확인후 192.168.1.X의 게이트웨이인 192.168.1.1로 보내버리는 것이다.  



 이렇게 하면 잘된다. 괜히 시간만 허비했다. 후.. 리눅스    



페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사