'bond'에 해당되는 글 1건



먼저 이 글은 불완전한 내용을 담고 있기에 외부로 스크랩하지 않으셨으면 좋겠다는 서두를 남깁니다.


본 서버에서 지난주부터 IPv6관련 검토사항들을 산발적으로 수행하였고
몇가지 문제점이 드러났으며 이에 해당 부분에 대하여 간략한 정리좀 해둡니다.


초기준비작업 #1 (IPv6주소할당)
~~~~~~~~~~~~~~~~~~~~

IPv6 주소를 할당받아야 합니다. 하지만 Network 기반이 잘되어 있는 우리나라치고는 IPv6 실험하기에 암울한 현실에 놀랐습니다. 결국 IPv6할당받는것은 좌절하게 되었습니다.

초기준비작업 #2 (IPv4주소할당)
~~~~~~~~~~~~~~~~~~~~

서버를 굳이 IDC에 넣지 않고도 얼마든지 더 빵빵한 네트웍에 돌릴수 있음에도 불구하고 IDC에 넣은 이유이기도 합니다. 바로 IPv4 고정주소를 할당받기 위함이지요. 물론 고정주소 아니라도 프로그램 약간 작성해서 동적으로 터널링 적응하도록 할수도 있을법 하지만 남는시간은 없는지라 그냥 속편하게 IDC에 무작정 입주시켰습니다.

초기준비작업 #3 (6to4  터널링 환경구축)
~~~~~~~~~~~~~~~~~~~~~~~~~

가볍게 호스팅업체에 물어봤습니다.

"여기 IDC는 IPv6지원하나요? 지원하지 않는다면 계획이라도 있습니까?"

기다림없이 바로 답변을 주시더군요.

"지원안하고요. 현재 계획이 전혀 없습니다."

결국 쉽게 IPv6테스트는 포기하고 할당받은 IPv4주소를 통하여 6to4 터널링으로 실험하기로 결정하였습니다.

아무래도 원격에서 6to4 터널링을 설정하기에는 위험부담이 굉장히 높았습니다.
왜냐하면 잘못하면 네트웍두절상태가 되면서 IDC를 방문해서 복구해야 하는 원하지 않는 사태가 벌어질수도 있기 때문이죠.

굉장히 신중한 검토끝에 설정포인트를 메모하고 별도의 VM에서 실험을 해보고 확실하다는 판단하게 이것을 적용하여 본 서버에 적용하였습니다.

다행히 네트웍 두절사태는 없었고 터널링 설정도 잘 되었습니다. bonding 에다가 터널링에다가 방화벽도 고려해야 하는 상황이 복잡하기는 하지만 어쟀건 한번에 성공한것으로 마음이 놓이더군요.

IPv6환경 구축하려면 iproute2 패키지는 꼭 설치하는게 좋습니다. (필수는 아니지만 있으면 편함)


본 서버의 IPv6 환경 요약
~~~~~~~~~~~~~~~

다음과 같이 성공적인 라우팅 테이블이 설정되었습니다.

sh$ /sbin/route -A inet6
Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
::1/128                                     ::                                      U     0      6014       1 lo
::121.78.118.125/128                        ::                                      U     0      0        1 lo
::/96                                       ::                                      U     256    1        0 6to4
2002:794e:767d::1/128                       ::                                      U     0      401       1 lo
2002:794e:767d::1/128                       ::                                      U     256    0        0 6to4
2000::/3                                    ::x.x.x.x                           UG    2      0        0 6to4
fe80::X:X:X:X/128                ::                                      U     0      0        1 lo
fe80::/64                                   ::                                      U     256    0        0 bond0
fe80::/64                                   ::                                      U     256    0        0 6to4
ff00::/8                                    ::                                      U     256    0        0 bond0
ff00::/8                                    ::                                      U     256    0        0 6to4


좌절 1탄 (ping할 상대를 구하기 어렵다)
~~~~~~~~~~~~~~~~~~~~~~~~~


이제 이게 되는지 확인은 해야 되겠지요?
근데 문제는 ping을 테스트할 목적지가 없는것이었습니다.
지금이라도 누군가가 ping6 를 테스트할 주소를 알려주시면 좋겠습니다.
ping도 못해보고 현재 상태는 완전 좌절입니다. 인터넷에 검색해보면 다들 어디서 IPv6개론만 잔뜩 붙여넣은거만 검색되서 짜증 100 배 입니다. 검색하다가 보면 눈 아픕니다.

좌절 2탄 (php 의 fopen 문제)
~~~~~~~~~~~~~~~~~~~


php의 fopen url open을 허용하고 외부사이트를 open해보면 IPv6주소가 잡혀있으면 실패하게 됩니다. 대충 다음의 링크와 유사한 현상입니다.

http://bugs.php.net/bug.php?id=11058

그리고 검색하다가 또 한번 짜증 100배 상승하게 됩니다. 이 문제를 저만 겪는것은 아니었고 이미 질문도 꽤 있었지만 "답변은 php를 IPv6 지원 옵션 제거하고 사용해라"는 원치 않는 답변뿐이었습니다.

혹시 이 부분에 대해서 IPv6지원옵션 제거하는 의미없는 해결책 말고 좋은 해결법을 알고계시면 저에게 알려주시면 감사하겠습니다.


좌절 3탄 (접속실패도 아니고 나한테 부메랑되어 접속시도)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


이건 좀 보안상 문제될 사안인것 같아서 자세히는 적지 않겠습니다.
간단히 요약하면
IPv4 전용 프로그램이거나 IPv6와 IPv4동시지원이 고려되지 않고 옵션에 의해서 선택하여 사용하는 프로그램들은 외부로 접속을 시도하게 의도하여 실행하였으나 외부로 접속하지 않고 엉뚱하게도 내부 local 로 접속시도하는 현상을 몇몇 프로그램들이 보였습니다.

rsync도 그중에 한가지인데 다행히 "--ipv4" 옵션으로 강제할수 있어서 피해갈 방법이 있는 경우도 많았습니다.

또한가지 재밌는것은 blog의 트랙백을 날릴수 없었습니다. 완전 고립된 서버가 되는것이죠. ㅡㅡ;

그 밖에 세밀하게 파고들면 답답하게 안되는게 많습니다.


IPv6의 미래와 향후 발전에 대한 걱정
~~~~~~~~~~~~~~~~~~~~~~

일본은 벌써 IPv6 준비가 끝나서 관련 상세스펙도 전달받을수 있었습니다.
하지만 우리나라는 제가 국내동향을 잘 모르고 하는 소리일지도 모르겠지만 저에게는 적어도 완전 암흑의 공간이었습니다.


마지막으로 간략히 6to4 터널링 방법에 대한 초단간 메모
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

사전에 준비할것은 Kernel 옵션에 6to4 터널링 관련 옵션이 활성화 되어 있어야 합니다.

올바르게 6to4를 커널이 지원한다면 "ifconfig -a" 명령으로 확인했을때 "sit0" 가 있을겁니다. 이것이 확인되어야 실험환경 준비가 됩니다. (예전에 sit0 가 뭐하는건데 쓸데없이 있는거냐고 투덜된것이 기억나네요)

본 서버에 할당된 IPv4가 121.78.118.125 입니다. 이것을 터널링주소대역으로 변환하면 2002:794E:767D 주소가 제 서버의 IPv6터널링에 사용하는 주소가 됩니다.

1. 먼저 6to4장치를 생성해야 합니다. 이것은 sit 로부터 생성됩니다. (여기서 "6to4"는 그냥 알아보기 좋게 붙인 이름일뿐 다르게 부여해도 됩니다. 어떤사람은 "tun6to4"가 더 보기 좋다고 하는군요.)

    /sbin/iptunnel add 6to4 mode sit ttl 64 remote any local 121.78.118.125

2. 6to4를 만들었으면 여기에 IPv6 터널링 global 주소를 추가합니다.

    /sbin/ifconfig 6to4 up
    /sbin/ifconfig 6to4 add 2002:794E:767D::1/16

3. 통과할 route를 잡아야 겠죠? 여기서 192.88.99.1과 203.254.38.130 두가지 선택을 예로 들었는데 전자는 외국쪽으로 가는거고 후자는 국내에 있다고 얼핏 기억나네요. 저는 192.88.99.1 로 했습니다. 선택은 맘대로~

    /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 metric 2 6to4
    # /sbin/route -A inet6 add 2000::/3 gw ::203.254.38.130 metric 2 6to4

4. 여기까지 하면 IPv6 터널링 준비 끝.
    하지만 Gentoo Linux 사용자분들이라면 /etc/cont.d/net에 다음과 같이 해주면 그냥 됩니다. (여기서 본 서버는 bond0 를 사용하고 있어서 이렇게 한것이고 eth0라면 eth0 로 하셔야 하는 센스는 발휘하셔야 합니다.)

    iptunnel_6to4="mode sit ttl 64 remote any local 121.78.118.125"
    link_6to4="bond0"
    config_6to4=("2002:794E:767D::1")
    routes_6to4=("2000::/3 gw ::192.88.99.1 metric 2")
    RC_NEED_6to4="net.bond0"

5. 이제 6to4 를 올렸으면 내릴수도 있어야 하는데 내릴때는 다음과 같이 역순으로 밝아가시면 됩니다. 근데 진짜로 이거 순서 잘못하거나 대충 건너뛰면 통신이 미쳐버릴수도 있습니다. 부디 그런일이 안생기도록 주의하세요.

    /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 metric 2 6to4
    # /sbin/route -A inet6 del 2000::/3 gw ::203.254.38.130  metric 2 6to4
    /sbin/ifconfig 6to4 down
    /sbin/iptunnel del 6to4

6. 여기까지는 실제로 iproute2를 사용하지 않고 설정하는 방법이었습니다. iproute2를 사용하시는 방법으로 시도하시는것을 추천하겠으나 그 방법은 소개하지 않겠습니다. 그리고 방화벽은 IPv4는 iptables를 사용하시고 IPv6는 ip6tables 를 사용하여야 합니다. 앞으로 IPv6가 정착되기 이전에 iptables 와 ip6tables 가 합쳐졌으면 하는 바램을 마지막으로 남겨봅니다.



작성자: 조재혁 mailto:minzkn@minzkn.com, http://www.minzkn.com/
작성일: 2008년 6월 11일


/* End of 대충메모 */





크리에이티브 커먼즈 라이센스
Creative Commons License
Posted by minzkn

트랙백 주소 :: http://blog.minzkn.com/trackback/263

댓글을 달아 주세요