Ubuntu 추가 랜카드 설정 및 사설네트워크 구축하기
# 용어 설명 #
랜카드 = Network Interface Card = NIC = Interface Card = Interface
네트워크 하는 사람이 “두번째 인터페이스 아이피가 뭐야?” 라고 물어보면 “두번째 슬롯에 꼽혀진 랜카드에 할당된 아이피를 물어보는 것이다.”
1. 추가 랜카드를 장착할 수 있는 업체 조사
* 편의상 1달러는 1000원, 100엔은 1000원 으로 계산하여 표시하겠다.
(2015년 9월 10일 기준 실제 환율은 1달러 = 1180원, 100엔 = 980원 이다.)
* 모든 클라우드 서버 호스팅 업체의 내부아이피 트래픽은 과금되지 않는다. 아예 측정하지 않거나(unmetered), 측정한 후에 0원을 곱해서 청구(zero cost)한다. 공인아이피 통신 트래픽은 과금된다. 같은 호스팅 회사라고 하더라도 과금되지 않기위해서 되도록 서버간에는 내부아이피로 통신하도록 하자.
클라우드 업체 목록은 이곳에서 찾을 수 있다. (https://blog.lael.be/post/44)
- Vultr (공인아이피 : 2000원, 사설아이피 : 무료)
- ConoHa (공인아이피 : 3500원, 사설아이피 : 무료)
- Linode (공인아이피 : 아마 5000원, 사설아이피 : 무료)
- Digital Ocean (공인아이피 불가능, 사설아이피 : 무료)
- Amazon AWS (VM 당 공인아이피는 1개로 제한, 사설아이피도 1개로 제한). 변경은 가능.
- 구글 클라우드도 가능할 것으로 추정.
- HOSTWAY 도 가능할 것으로 추정.
- 그 외의 업체는 추가가 안되거나 매우 비쌀 것이다.
2. 사설 네트워크 구축 (서브넷 설정)
라엘이가 ConoHa Cloud 에서 테스트 작업을 하였기 때문에 ConoHa 기준으로 작성하도록 한다.
사설 네트워크 구축(서브넷 설정)은 약간 번거로운 작업이다. 보통의 사용자에겐 필요없는 작업이다.
Vultr 나 Linode 의 경우 당신의 모든 서버를 사설 네트워크로 미리 연결해 두었다. 통채로 그룹을 지어둔 것이다.
ConoHa, AWS, GCE 는 다음 그림과 같이 사설 네트워크 그룹(서브넷)를 설정해 주어야 한다.
그림과 같이 입력하면 된다.
0-255 넣는 칸에 아무 숫자나 넣으면 된다.
라엘이의 경우 10 을 입력했다.
참고로 192.168.10.0/24 는 192.168.10.0~192.168.10.255 를 뜻한다. (더 알고 싶다면 구글에서 “서브넷 계산” 을 검색하여라.)
끝자리 0번과 끝자리 255번은 특수목적용으로 예약되어있기 때문에 실제 사용가능한 IP 대역은 192.168.10.1 ~ 192.168.10.254 이다.
3. 사설아이피 할당
VM 을 종료한 후에 “할당하기” 를 선택하면 서버에 랜카드가 추가되고 아이피가 할당된다.
VM 켜서 root 로 로그인하자.
- 현재 동작중인 네트워크 정보 조회
# ifconfig
아마 eth1 장치가 동작중이지 않을 것이다.
서버에 장착된 랜카드 목록 출력
# ip link show
분명히 eth1 장치가 장착되어 있는데 동작중이지는 않는다.
랜카드에 아이피를 지정하고 켜기.
# ifconfig eth1 192.168.10.2 up
랜카드에 아이피 및 넷마스크 지정하고 켜기.
#ifconfig eth1 192.168.10.2 netmask 255.255.255.0 up
이 상태에서 정말 완벽하게 동작한다. 다만 재부팅하면 IP 설정이 초기화 되고 랜카드가 자동으로 켜지지 않는 문제가 있다.
해결하도록 하자.
4. 랜카드 부팅시 마다 켜기
우분투의 경우 /etc/network/interfaces 위치에 네트워크 설정파일이 있다.
설정파일을 잘못 건드리면 부팅이 느려진다. (IP를 정상적으로 할당받지 못하는 경우, 할당받기 위해서 몇번 재시도 한다.)
# vi /etc/network/interfaces
auto eth1 iface eth1 inet static address 192.168.10.2
추가.
auto 는 자동으로 켜라는 뜻이다.
iface static 은 장치는 static ip 를 사용한다는 것이다.
address 는 사용할 static ip 를 지정하는 것이다.
이렇게 설정하면 운영체제(OS)는 eth1 이 192.168.10.2 의 IP를 가지고 있으며 192.168.10.0/24 서브 네트워크와 인접해 있다고 가정한다. 예를 들어 192.168.10.150 와 통신시도를 한다면 eth1 랜카드를 사용할 것이다.
(이해가 약간 어려울 수도 있는데, 이것보다 더 쉬운 설명이 떠오르지 않는다.)
5. 재부팅 후 테스트
서버를 재부팅한 후에 다른 서버에서 사설아이피로 ssh 나 ping 을 통해 접근해 보면 된다.
끝.
** 공인아이피를 추가할 경우 **
이왕 네트워크 카드에 대해 다루는 김에, 사설 네트워크 말고 공인 네트워크를 설정하는 법에 대해서도 다루도록 하겠다.
추가하는 공인 아이피가 현재 아이피와 같은 네트워크 대역(동일 서브넷)에 있으면 설정이 쉽다. 사설아이피 할당하듯이 설정하면 된다. 즉 동일한 게이트웨이를 사용하는 아이피는 설정이 쉽다.
다만 다음과 같이 동일 서브넷 안에 있지 않는 아이피를 사용하려면 다중 게이트웨이(multi gateway)를 설정해야하며 번거로운 작업을 해야한다.
1. 공인아이피 할당(구입)
2. 할당된 IP 를 서버에 연결
사설 네트워크와 다른점으로, 추가 아이피는 외부와 통신을 해야하기 때문에 게이트웨이를 제대로 설정해야 한다.
게이트웨이는 네트워크 그룹들을 연결하는 역할을 수행한다.
비유하자면 사설네트워크는 “모두가 한 건물의 한 방에 있는 것” 이다. A가 소리지르면 같은방의 B가 들을 수 있는 것이다.
공공 네트워크(Public Network)는 “A는 어떤 한 건물에 있고, C는 다른 건물에 있는 것”이다. A의 소리를 C는 들을 수 없다. 따라서 메시지 전달을 해야하는데 우리는 메시지를 자신 건물의 우편함까지만 안내하면 된다. 우편함 운영이나 메시지 전달은 통신사업자가 알아서 잘 구축/운영할 것이다. 메시지는 C가 있는 건물의 우편함까지 운반되며 최종적으로 우편함 운영자가 C에게 전달한다.
서버에 장착된 랜카드 목록 출력
# ip link show
eth2 라는 새로운 랜카드가 장착된 것을 볼 수 있다.
랜카드에 아이피를 할당하고 켜기.
# ifconfig eth2 133.130.92.29 netmask 255.255.254.0 up
별로 특별한 것은 없다. IP 할당 정보대로 입력하면 된다.
3. 랜카드 부팅시마다 켜기
# vi /etc/network/interfaces
netmask 만 한 줄 추가되었다.
이제 공인아이피로의 신호가 정상적으로 서버까지 전달된다.
하지만 서버에서 응답이 가지 않는다.
무슨 상황이냐면 현재 우리가 사용하는 TCP/IP 통신에서는 송신자가 메시지를 보내고(SYN), 수신자가 메시지를 받았으면 수신자가 송신자에게 “받았다(ACK)” 라고 알려주어야한다.(3-way handshake) 그런데 이 “받았다” 라는 신호가 길안내가 잘못되어서 전달이 안되는 것이다.
- 라우팅 테이블 보기. 라우팅은 데이터 패킷의 길을 안내하는 것이다.
# route -n
어떤 사용자의 아이피가 100.200.300.400 이라고 가정하고 133.130.92.29 에 패킷을 전달하려 한다고 하자.
패킷은 133.130.92.1 까지 전달되며 최종적으로 133.130.92.29 서버에게 패킷이 도착한다.
133.130.92.29 서버는 응답패킷을 작성하였고 위의 라우팅 규칙에 따라서 133.130.102.1 에게 전달한다.
133.130.102.1 는 133.130.92.29 가 자신의 네트워크 관리범위에 없으므로 전달된 패킷을 에러로 분류해서 버려버린다. (Drop 시킨다.)
따라서 우리는 133.130.92.29 가 패킷을 133.130.102.1 이 아닌 같은 네트워크의 중계기인 133.130.92.1 로 보내도록 수정해야한다.
- 커스텀 아이피 필터룰 작성 (make custom ip rule)
route 명령어의 역할은 목적지에 따른 길안내 이다.
“A 목적지에 가려면 B길로 가세요” 라는 설정을 하는 것이다.
우리는 “K 서버에서 발송하는 패킷은 B길로 가세요” 같은 조건을 주어야하므로 route 명령어 만으로는 구현할 수 없고, ip rule 조건을 먼저 설정하고 route 와 함께 사용하여야 한다.
조건 그룹(table) 생성.
# cat /etc/iproute2/rt_tables
# echo 200 custom >> /etc/iproute2/rt_tables
# cat /etc/iproute2/rt_tables
번호는 200번 이름은 custom 인 조건 그룹이 생성되었다.
133.130.92.29 가 보낼 패킷은 custom 규칙을 따르도록 설정하자.
# ip rule add from 133.130.92.29 lookup custom
ip rule 명령어의 역할 및 소개는 다음을 참조하여라.
http://manpages.ubuntu.com/manpages/trusty/man8/ip-rule.8.html
table custom 을 따르는 것들에게 기본 라우팅 주소를 133.130.92.1로 지정하자.
# ip route add default via 133.130.92.1 table custom
via ~ : ~ 를 통해, ~ 를 거쳐서
특정한 조건이 없으면 via 를 통해서 가라. 단 custom 조건에 부합한다면.
이 상태에서 서버는 정상적으로 2개의 아이피를 처리할 수 있게 된다.
라우팅 정보도 재부팅시 사라지므로 interface 파일에 적어두어야 한다.
4. 라우팅 정보 설정하기
# vi /etc/network/interfaces
줄바꿈이나 들여쓰기는 해도되고 안해도 된다.
auto eth2 iface eth2 inet static address 133.130.92.29 netmask 255.255.254.0
post-up ip rule add from 133.130.92.29 lookup custom post-up ip route add default via 133.130.92.1 table custom
5. 라우팅 정보 확인
ip route get 211.123.123.100 from 133.130.92.29
6. 재부팅 후 정상 동작 확인
#reboot
이제 이 서버는 두개의 서로다른 공인아이피로 동작한다.
끝
kt에서 아이피 하나를 받아서 112.x.x.x로 사용중입니다.
컴퓨터 하나는 192.168.0.10이고 다른 하나는 192.168.0.11입니다.
192.168.0.10은 도메인 업체에서 레코드 설정하여 도메인 연결하여 abc.com사용 중입니다.
문제는
다른 실제 물리적 컴퓨터 192.168.0.11도 설정을 하고 사용하려고 하니 제 iptime공유기가(iptime모델 640s)192.168.0.10가 80포트를 가져가
192.168.0.11에게 8080포트등 다른 포트를 주었습니다. 여기서 문제가 생겼는데, 도메인 업체에 cde.com:8080이 레코드에 포트 번호가 들어가지 않을 뿐더러 dns인가 그런것들을 사용해도 순수히 cde.com이 안되고 주소 뒤에 포트번호가 노출되는 거 같습니다. 이 둘은 가상 호스트가 아닌 실제 물리적 컴퓨터입니다.
kt에서 받은 하나의 외부 아이피 112.x.x.x 는 하나뿐이라, 각 각 포트가 노출이 안되고 순순히 192.168.0.10은 abc.com, 192.168.0.11은 cde.com에 연결하고 싶은데 방법이 있는지 궁금합니다. 헥헥… 밑에 곱셉 틀려서 인지 다시 이렇게 또 씁니다.
https://blog.lael.be/post/1023 글을 참조하여
192.168.0.10 에서 먼저 데이터를 수신한 다음에 192.168.0.10->192.168.0.11 처리하도록 설정해주세요.
코노하 이용 중인 초보 입니다
공인 아이피를 추가 하게 되면
예를 들어
아이피 101로 접속 후 a싸이트에 접속하면 101 아이피로 접속
아이피 202 접속 후 a싸이트 접속하면 202 아이피로 접속하는걸로 나오나요?
(제가 원하는건 이런 방식 입니다. 이게 가능한건가요? 서버 자꾸 추가 하려니 막막하네요.ㅠ)
그리고
ifconfig -a 하면
https://imgur.com/a/Jyiax
요렇게 나오는데 뭘 설정 해줘야 하는건가요?
네 말하는 방식대로 됩니다.
본문 내용만 따라하면 잘 설정됩니다.