본문 바로가기
Tech/Linux

[GCP] Centos 6.10 upgrade 후 네트워크 접속 안되는 문제

by 타이호 2018. 7. 10.
반응형

GCP 내에서 CentOS 6.9로 VM을 생성 했는데, 어느 순간 auto update를 통해 6.10으로 업데이트 되면서 VM에 연결이 되지 않았다. 해당 문제를 해결하기 위한 과정을 정리해 보았다.


1. Centos 6.10 Upgrade 이전 상황 (version 6.9)

VM의 라우팅 상황

[thkang0@instance-1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway Genmask         Flags MSS Window irtt Iface
10.142.0.1      0.0.0.0 255.255.255.255 UH        0 0 0 eth0
169.254.0.0     0.0.0.0 255.255.0.0     U 0 0 0 eth0
0.0.0.0         10.142.0.1 0.0.0.0         UG 0 0 0 eth0

VM OS 버전

[thkang0@instance-1 ~]$ cat /etc/redhat-release
CentOS release 6.9 (Final)


SELINUX 상태

[thkang0@instance-1 ~]$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted


위와 같이 VM 접속에 영향을 미칠 수 있는 요소들을 파악을 해보았다. 실제로 접속이 안되는 것은 라우팅 테이블 문제였지만, 다방면으로 문제에 접근하기 위해 os version, selinux 등등도 체크를 해보았다.


2. CentOS 6.10 Update 이 후

리부팅 한 후 VM에 접속을 시도 했지만 접속이 되지 않았다. 그래서 serial console을 통해 vm에 접속을 해서 원인을 살펴 보니

[thkang0@instance-1 ~]$ netstat -rn
Kernel IP routing table
Destination     Gateway Genmask         Flags MSS Window irtt Iface
10.142.0.1      0.0.0.0 255.255.255.255 UH        0 0 0 eth0
169.254.0.0     0.0.0.0 255.255.0.0     U 0 0 0 eth0

이처럼 라우팅 테이블에서 default gw가 빠져 있어 접속이 되지 않은 것이 원인이었다.


3. 문제점

DHCP의 원리는 dhcp client가 dhcp 서버에게 broadcast로 dhcp를 요청하면 서버가 클라이언트에게 ip를 할당해 주는데, GCP는 네트워크 구조가 모두 라우팅 기반(모두 32비트 subnet을 가짐)이기 때문에 dhcp client의 스크립트 옵션 중 router reachable이라는 스크립트가 fail이 되어 발생된 문제인 것 같다.

https://issuetracker.google.com/issues/111154121

https://bugzilla.redhat.com/show_bug.cgi?id=1527995


4. 해결책

/etc/rc.local에 Default gw 라우팅 추가

route add default gw 10.142.0.1 dev eth0


혹은 gcp console에서 VM의 start-up script에 위 라우팅을 스크립트로 준다.

#!/bin/bash

route add default gw 10.142.0.1 dev eth0



반응형