윈도우 환경에서 docker가 설치된 컴퓨터 간의 ping IP 주소 풀이 오류
docker가 설치된 두 대의 컴퓨터에서 서로 ping을 해보면 IPv6으로 출력이 되는 것을,
c:\temp>ping -a testpc
Pinging testpc [fe80::c8f0:dde:3120:4254%26] with 32 bytes of data:
Reply from fe80::c8f0:dde:3120:4254%26: time<1ms
Reply from fe80::c8f0:dde:3120:4254%26: time=1ms
Reply from fe80::c8f0:dde:3120:4254%26: time<1ms
IPv4로 돌렸더니,
c:\temp>ping -4 -a testpc
Pinging testpc [10.0.75.1] with 32 bytes of data:
Reply from 10.0.75.1: bytes=32 time<1ms TTL=128
Reply from 10.0.75.1: bytes=32 time<1ms TTL=128
Reply from 10.0.75.1: bytes=32 time<1ms TTL=128
Reply from 10.0.75.1: bytes=32 time<1ms TTL=128
보는 바와 같이 (원래는 192.168.100.5인데) 10.0.75.0 대의 네트워크 주소가 나옵니다. 게다가 ping이 되는 것처럼 나오지만 실제로는 자기 자신에게 ping을 한 것과 같습니다. 왜냐하면 로컬에도 docker가 설치되어 있고 docker의 기본 Hyper-V 가상 네트워크 설정이 10.0.75.0에다 호스트 PC의 IP를 10.0.75.1로 설정하기 때문입니다. 실제로 ipconfig을 해보면 DockerNAT 설정으로 확인할 수 있습니다.
c:\temp>ipconfig
Windows IP Configuration
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::e8c5:e110:b267:9bdd%27
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::c8f0:dde:3120:4254%5
IPv4 Address. . . . . . . . . . . : 192.168.100.5
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.100.1
...[생략]...
(반면, IPv6의 경우 정상적으로 대상 컴퓨터의 IPv6 주소가 ping으로 구해졌습니다.)
이 문제를 해결하는 방법은 2가지입니다.
첫 번째는, 어느 한 쪽의 PC에 대해 docker 설정에 들어가 네트워크를 다르게 하는 것입니다. 가령, 기본 값이 10.0.75.0인데 이것을 다음과 같이 10.0.76.0으로 바꾸는 것입니다.
이를 원하지 않는다면, route 테이블을 바꿔주면 됩니다.
윈도우 10에서 사라진 "Adapters and Bindings" 네트워크 우선순위 조정 기능 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/11782
윈도우 운영체제의 route 명령어 사용법
; https://www.sysnet.pe.kr/2/0/11367
사실 첫 번째 방법이 더 좋습니다. 왜냐하면, 두 번째 방법은 (양쪽 컴퓨터에서 서로 ping을 한다면) 양쪽 컴퓨터에서 모두 해줘야 하기 때문입니다. (2가지 모두 재부팅이나 현재 실행 중인 응용 프로그램을 재시작할 필요가 없습니다.)
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]