하나의 NIC에서 DHCP와 정적 IP 주소 동시에 사용하기

문제

같은 스위치에 물려있는 두 컴퓨터가, 각각 ISP의 DHCP 아이피를 받았지만, 동일한 서브넷에 있지 않아 외부망으로 트래픽이 나갔다 오는 현상이 발생하였다.
내 스위치는 기가비트로 거진 1Gbps 가까이는 나오는데, KT 기가컴팩트를 사용해서, 스위치에 물려있는 옆에 있는 컴퓨터까지 외부망을 타고나와 500Mbps 대역밖에 안나오는것이다.
아니? 컴퓨터가 바로 옆에 있는데 왜 트래픽이 기지국까지가냐!

방법을 찾아보자

각각 컴퓨터에 NIC (일명 유선랜카드)를 추가로 장착해 서로 연결해준다.

번거롭고 서로의 통신속도 좀 내보자고 유선랜카드를 달고 서로 연결한다니

스위치 허브 대신 인터넷 공유기를 설치한다.

인터넷 공유기는 보통 NAT이 무거운 작업이기 때문에, 성능을 기대하려면 좋은 (비싼) 공유기를 사용해야한다. 그리고 이미 스위치허브를 쓰고있어 인터넷은 잘 되고 있다. 굳이 바꿔야하나

같은 서브넷의 DHCP 아이피를 받을 때 까지 기다린다.

이 경우는 가정용 아이피가 틈만나면 유동되고, 서브넷 까지 달라져서 해결방법은 아닌 것 같다.

가상 인터페이스를 추가해서 같은 서브넷으로 통신하게 끔 만든다.

기본적으로 윈도우즈 UI에 DHCP모드에서 정적아이피가 추가가 안된다.

인터넷에 Loopback 어댑터를 추가해서 브릿지로 묶는등… 이상한 방법을 동원해보았지만, 루프백 어댑터는 말그대로 루프백일 뿐이고 다른 PC와 연결에 도움을 주진 못했다.

문제 해결

필요 사항

  • Windows 10 Redstone 2 Creators Update (1703, 15063) 이상의 운영체제 또는 평범한 리눅스(?)

만약 Windows 10 1703 이전 버전이나 운영체제의 경우, 안타깝지만 해결방법은 NIC 카드를 추가하는 방법 뿐이다.
Windows 7 용. 유료 소프트웨어(Virtual Dual NIC)가 있는것 같은데, 신뢰되는 소프트웨어인지 모르겠다.

설정하기

독자(가 있을진 모르겠는데)의 이해를 돕기 위해 네트워크 구성 그림을 그려보았다.

스위치 허브는 1Gbps 지원을하고 이 경우, PC2와 PC3은 서로 스위치 허브에서 트래픽이 스위치 되어 1Gbps로 통신하는 반면,
PC 1이 PC2 혹은 PC3 통신하는 경우, KT 기지국 라우터를 거쳐서 500Mbps 의 속도로 통신하게 된다. (이건 ISP 망 사정에 따라 다를 수도 있다.)

PC1이 리눅스고 PC2가 윈도우즈 10 이다. 이제부터 새로운 내부통신용 아이피를 부여하게 할 것이다.

적용할 사설 아이피

PC 1 : DHCP + 192.168.200.201/24
PC 2 : DHCP + 192.168.200.202/24

(PC1) 리눅스 Debian 9 Stretch 에서 설정

리눅스의 현재 인터페이스 상태를 확인한다

인터페이스 enp0s3*** 에 DHCP 모드로 되어있다. 과거 eth0 이 enp0~~ 로 변경된거다.

enp0s**** 는 PC마다 다르게 설정되는듯 하다. 각자의 것으로 수정해서 작업하자.

/etc/network/interfaces 수정 (Debian 9 기준. RHEL 계열의 운영체제는 다르다!!)

(auto말고 allow-hotplug 로 설정되어있었는데, 불편해서 auto 로 변경했다.)

이제 이 아래에 어댑터에 가상 네트워크 인터페이스를 추가하고 정적아이피를 부여한다.

저장하면 네트워킹을 재시작해준다.

아이피가 할당되었는지 확인한다.

(PC2) Windows 10 에서 설정

[윈도우 로고 + X] 를 눌러 Windows PowerShell (관리자) 를 실행시킨다.

ipconfig 을 입력해서 어댑터 이름을 확인한다. 이 경우 “Ethernet”.
한글판의 경우 “이더넷” 이라고 보통 되어있다.

아래의 명령어를 입력한다. (“Ethernet” 은 각자의 어댑터 이름이다. 한글판은 기본 “이더넷”)
dhcpstaticipcoexistence가 Windows 10 1703 부터 생긴기능이며, DHCP와 정적아이피가 공존할 수 있게, 설정하는 것이다. 현재 GUI 설정은 지원하지 않는다.

다음은 아래의 명령어를 사용해, 어댑터에 아이피를 추가한다.
netsh interface ip add address “이더넷” <아이피주소> <서브넷마스크>

 

추가 후 ifconfig 을 입력하여, 정적 아이피가 추가되었는지 확인한다.
놀랍다. 혼종이다.

확인

ping 명령어로 PC1 와 통신이 되는지 확인해보자.

Windows 운영체제는 기본적으로 ICMP가 방화벽에서 차단되어있어, 방화벽을 해제 하지 않는 이상 ping 테스트를 통한 확인이 불가능하다.

핑 응답이 정상적으로 0ms 대를 보이고 있다.

원래라면 다른 서브넷으로 인해 KT 인터넷까지 도달해 최소 2ms 는 추가되고, 500Mbps 대역밖에 나오지 않지만, 정적 아이피를 추가하여 스위치 내에서 트래픽을 교환하게 만들었다.

속도 비교

CAT5.E라서 980M이 한계일까?