티스토리 뷰

반응형

개인적으로 사용중인 서버는 두 개의 물리적 네트워크 인터페이스(랜카드가 2개라는 소리)가 존재합니다. 하나는 ISP 와 직접 연결되어 DHCP 로 공인IP(Real IP)를 받아서 사용하고, 다른 하나는 공유기를 통해 내부에서 빠르게 접근하기 위해 사설IP를 받아서 이용중입니다. 공유기의 DHCP 는 subnet 으로 255.255.255.0(/24)을 이용하긴 하지만, IP 발급은 101~250 정도로 일부 범위만 배정하고, Gateway 는 1번, 그 외에 서버급의 장비들은 IP 를 고정하기 위해 보통 10~99 번 사이에 Static으로 설정해서 사용하고 있습니다.

 

문제는 내부에서 가상머신을 이용할 때 브릿지 모드를 이용해 가상머신도 이렇게 두 개의 IP 을 발급 받습니다. 외부에서 직접 접근할 필요가 있는 장비들은 특히 이렇게 이용합니다. L7 소프트웨어를 통해서 연결하면 되는 것들은 공유기를 통해 연결되는 네트워크만 사용하면 되지만, 가상머신을 위한 하이퍼바이저 관리자 페이지나 L7 을 서비스중인 장비 등은 공인IP을 발급받아 사용하는게 편하기 때문입니다.

 

이렇게 두 개의 다른 DHCP 를 받은 네트워크 인터페이스가 있는 OS 에서는 default gateway 가 두 개 생성됩니다. 리눅스에서 ip route 명령으로 확인 가능합니다. 장치 이름은 OS 에 따라 다를 수 있지만, 많이 이용되는 eth0, eth1 으로 된다고 가정했을 때, 둘 중 공유기를 통해 연결되는 장치의 default gateway 설정을 없애주지 않으면 외부 접속에 문제가 발생할 수 있습니다. Linux 배포판이나 OS 버전에 따라 달라질 수 있지만, 최신 배포판에선 거의 ip 명령으로 관리하고 ip route 로 라우팅 정보를 확인할 수 있다면 특정 gateway 을 명령으로 제거할 수 있습니다. 저의 경우 공유기를 통해 접속되는 네트워크 인터페이스를 보통 eth0 로 하기 때문에 아래와 같이 제거할 수 있습니다.

ip route del default dev eth0

장치(dev)의 이름이 eth0 인 default route(gateway)을 지우라는 명령입니다. 이후 다시 ip route 명령을 실행하면 삭제된 것을 확인할 수 있습니다.

이후 OS 별로 다른 방식으로 네트워크 인터페이스가 실행될 때 저 명령을 실행하거나 route 에 등록하지 않도록 하는 방법이 있습니다. 하지만, 상황에 따라 설정 방법이 달라지기 때문에 가장 추천되는 방법은 crontab 을 이용해 부팅 시 실행되는 마지막 부분에 위 명령을 실행하게 하는 것입니다. crontab 에서 cron 스타일의 실행주기가 아닌 @reboot 로 시작하면 시작 시 실행하는 명령이 됩니다. 그러므로 아래와 같이 crontab -e 명령을 실행한 뒤 추가하면 됩니다.

# crontab -e
@reboot ip route del default dev eth0
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함