분류

2020년 7월 8일 수요일

Linux(Centos)로 분리된 2개의 망 연결하기 (routing설정)

1. 개요 
회사에서 사용하는 공유기를 통해 Hadoop 서버에 연결하여 사용하는 중입니다. 최근 하둡 시스템의 네트워킹 성능 향상을 위해 광랜 망을 구성하였는데 광 단자로만 이루어진 스위치를 사용하다보니 기존 UTF 기반의 network을 연결할 수 없게 되었습니다. 

이를 해결하고자 네트워크 본딩, NAT나 브릿지를 설정하려고 하던 중 그냥 라우팅만으로 해결할 수 있을 것 같아 해당 방법을 실행 해 보았습니다. 

시스템의 구성은 이렇습니다. 
1GB 망 192.168.0.X 대역
100G 망 192.168.1.X 대역 

네트워크 구성(클릭하면 커집니다.) 

2개의 Lan 카드가 물리적으로 장착되어 있고 사용자는 ip time 공유기를 통해 192.168.0.x 대역의 서버에 접속할 수밖에 없습니다. 광랜망을 통해 하둡 서버를 통신하게 하기 위해서 IP대역이 분리되었는데 분리된 망으로 서버를 구성할 경우 접속을 할 수 없었습니다. 

2. NETWORK 연결 
일단 원하는 목표는 단순합니다. 192.168.0.X 대역에서 192.168.1.X 대역에 접속만 할 수 있으면 됩니다. 뭐 인터넷망과 내부 사설망 연결하는 다른 방식과 크게 다르지 않습니다. 
이렇게 말이죠. 
2개의 사설망을 iptable을 이용해 통합.

복잡하게 이런 저런 일들을 하는 것 보다 단순한 게 좋습니다. 경로에 해당하는 IP TIME과 데이터노드 102번에 대한 설정을 진행하겠습니다. 

가. 공유기 설정 
IP TIME 공유기를 통해 192.168.1.X 대역의 라우팅을 192.168.1.102 서버에 설정합니다.
꼭 102가 아니어도 됩니다. Linux 서버 중 광랜과 통신할 수 있는 1.101, 2, 3, 4 모두 가능합니다. 

우선 위 그림과 같이 IP TIME관리자 페이지에 접속하여 
고급설정 -> NAT/라우터 관리 -> 라우팅 테이블 관리를 통해 
192.168.1.0을 입력하고 MASK 24 GATEWAY를 라우터로 사용할 서버로 설정합니다. 
끝자리를 0으로 설정하는 이유는 0은 실제로 존재하지 않는 IP입니다. 0을 입력하면 해당 대역 전체를 사용하겠다는 의미로 라우터가 받아드립니다. 

따라서 192.168.1.X 대역에 대한 호출은 모두 102번으로 가게 되는 겁니다. 

결과 확인을 위해 사용자 pc를 열어서 ping -t 192.168.1.102를 해놓았었습니다. 라우팅 테이블이 적용됨과 동시에 102에서의 응답을 받을 수 있습니다. 
하지만 102를 제외한 나머지 101, 103, 104 서버는 여전히 통신이 불가능합니다. 


나. CentOS설정
이제 192.168.0.0 대역에서 오는 192.168.1.0 요청을 192.168.1.1로 보내게 하면 되는 것 같습니다. 

switch나 공유기에서 하는 라우팅 테이블 설정이 리눅스, windows모두 가능합니다. 저희 시스템은 Linux 기반이기 때문에 리눅스에서 했습니다. 

1) routing 확인 
먼저 route 명령을 쳐서 routing table을 확인합니다. 
기본 구성된 route 테이블 
192.168.1.102에 패킷 테스트가 바로 성공해서 의아했는데 기본 gateway가 0.0.0.0으로 둘 다 공유되어 있어서 가능했나봅니다. 
--------------------------------------------------------------------------------
우선 위 사진의 "기본 구성된 route 테이블" 처럼 라우팅 테이블이 구성되어 있다면 network 카드 2개에서 발생하는 모든 패킷이 공유되는 것으로 보입니다. 따라서 라우팅 테이블은 손댈 필요가 없습니다. 

없을 경우 아래 정보를 입력합니다. 
routing 테이블에 네트워크 각각 ip영역에 대한 인터페이스 정보를 추가합니다. 
# route add -net 192.168.0.0/24 gw 192.168.0.1 enp4s0
# route add -net 192.168.1.0/24 gw 192.168.1.1 enp1s0
--------------------------------------------------------------------------------

다음은 IP 포워딩 설정합니다. 
우선 기본 포워딩을 지워주고 
# iptables -P FORWARD DROP

다음은 각 랜카드에 포워딩 허용설정을 해줍니다. 
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A FORWARD -o enp1s0 -j ACCEPT
# iptables -A FORWARD -o enp4s0 -j ACCEPT


다음은 192.168.1. 대역에 가상ip로 접속 가능하게 허용을 해줍니다. 
# iptables -t nat -A POSTROUTING -o enp1s0  -j MASQUERADE


# 기타 centos 8.4의 경우 masquerade 설정이 firewalld 에도 존재하므로 다음 커맨드를  

# firewall-cmd --add-masquerade

3. 완료

위 설정이 다 끝나면 기본적으로 192.168.1.101~4 모두 통신이 돼야 합니다. 사용자 pc에서 ping 테스트를 모두 마친 후 정상이라면 이제 iptable 내용을 저장해야합니다.  현재 커맨드를 통해 적용된 규칙은 재부팅되면 날아가게 됩니다. 

iptables-services를 설치하면 시스템 종료 이후에도 설정 값을 유지할 수 있습니다. 다음 순서에 따라 진행하세요 


1) 방화벽 비활성화 
# systemctl disable firewalld

2) iptable 서비스 설치 
# yum install iptables-services

3) ip테이블 서비스 활성화 
# systemctl enable iptables

4) 규칙 저장 
# service iptables save

규칙은 위 과정에서 이미 다 설정이 되었으므로 별도로 작업하지 않아도 됩니다. 
위 4단계 작업을 수행했으면 해당 서버를 재부팅 된 이후에는 사용자 커맨드 환경에서 간단한 명령을 통해 network이 정상적으로 연결되었는지 확인할 수 있습니다. 
linux 콘솔이라면 traceroute  192.168.1.x
windows 콘솔이라면 tracert 192.168.1.x
명령을 통해 다음과 같은 화면을 확인하실 수 있습니다. 


###############################################################
2020.10.26 echo 1 > /proc/sys/net/ipv4/ip_forward 저장 오류 발생 
ip forward 허용 설정이 풀리는 현상이 갑자기 발생하였습니다. 
해당 설정을 영구저장 하기 위한 파일은 
/etc/sysctl.conf 파일입니다. 
해당 파일에 아래 한줄을 추가하면 재부팅 이후에도 정상 적용 됩니다. 
net.ipv4.ip_forward = 1 
###############################################################
이상입니다. 긴 글 읽느라 수고 많으셨습니다. 
읽어주셔서 감사합니다. 

댓글 없음:

댓글 쓰기