USB가 꿍해졌어요. ㅡㅡ;

minzkn™ 2008/06/25 09:17 장인정신
br /문제없이 잘 쓰던 USB HDD가 어제는 좀 과하게 사용했는지 다음과 같은 메세지를 남기고br /동작을 멈췄습니다. 아~악~ 겨우 구축해놓은건데... 다 날리게 생겼음..br /br /추후 이 문제를 잡기 위해서 다음과 같이 기록해둡니다. 혹시 이와 유사한 문제를 겪었고 해결방법을 아시는 분께서는 해결방법을 알려주시면 감사하겠습니다.br /br /기록사항br /커널 버젼: vanilla-source v2.6.24.7br /USB controller: 이름은 모르겠고 GL811E/0505MK8JF-04 로 표시됨.br /HDD: Notebook 용 IBM HDD 20GBytesbr /br /아래내용은 이와 관련된 kmsg dump내용:br /usb 5-7: reset high speed USB device using ehci_hcd and address 5br /usb 5-7: reset high speed USB device using ehci_hcd and address 5br /usb 5-7: reset high speed USB device using ehci_hcd and address 5br /usb 5-7: USB disconnect, address 5br /sd 2:0:0:0: Device offlined - not ready after error recoverybr /sd 2:0:0:0: [sdb] Result: hostbyte=0x05 driverbyte=0x00br /end_request: I/O error, dev sdb, sector 31457680br /Buffer I/O error on device sdb1, logical block 3932206br /lost page write due to I/O error on sdb1br /Buffer I/O error on device sdb1, logical block 3932207br /lost page write due to I/O error on sdb1br /Buffer I/O error on device sdb1, logical block 3932208br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /sd 2:0:0:0: rejecting I/O to offline devicebr /Buffer I/O error on device sdb1, logical block 3932228br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /Buffer I/O error on device sdb1, logical block 3932234br /lost page write due to I/O error on sdb1br /Buffer I/O error on device sdb1, logical block 3932235br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /Buffer I/O error on device sdb1, logical block 3932239br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /Buffer I/O error on device sdb1, logical block 3932276br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /Buffer I/O error on device sdb1, logical block 3964931br /lost page write due to I/O error on sdb1br /Buffer I/O error on device sdb1, logical block 3964932br /lost page write due to I/O error on sdb1br /sd 2:0:0:0: rejecting I/O to offline devicebr /sd 2:0:0:0: [sdb] Result: hostbyte=0x01 driverbyte=0x00br /end_request: I/O error, dev sdb, sector 31457840br /Aborting journal on device sdb1.br /WARNING: at fs/buffer.c:1169 mark_buffer_dirty()br /Pid: 18742, comm: kjournald Not tainted 2.6.24.7 #1br /nbsp;[lt;c019053cgt;] mark_buffer_dirty+0x7c/0x90br /nbsp;[lt;c01c31b8gt;] __journal_unfile_buffer+0x8/0x20br /nbsp;[lt;c01c5087gt;] journal_commit_transaction+0x5f7/0xd20br /nbsp;[lt;c0419eadgt;] schedule+0x1dd/0x690br /nbsp;[lt;c013a4c0gt;] autoremove_wake_function+0x0/0x50br /nbsp;[lt;c01c8605gt;] kjournald+0xa5/0x1f0br /nbsp;[lt;c013a4c0gt;] autoremove_wake_function+0x0/0x50br /nbsp;[lt;c01c8560gt;] kjournald+0x0/0x1f0br /nbsp;[lt;c013a1f2gt;] kthread+0x42/0x70br /nbsp;[lt;c013a1b0gt;] kthread+0x0/0x70br /nbsp;[lt;c0104effgt;] kernel_thread_helper+0x7/0x18br /nbsp;=======================br /br /
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/25 09:17 2008/06/25 09:17
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/268

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/268

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/268

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/268

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/268
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/268

P2008년 6월 21일 ~ 2008년 6월 22일br /br /IPv6에 대한 구현을 위해서 가장 먼저 알아야 하는 getaddrinfo 함수에 대한 간략한 테스트 코드입니다.br /설명하려고 만든것도 아니고 그냥 이것저것 고쳐가면서 특성파악했던 잔여물입니다.br /br /특성 파악도 안하고 그냥 코딩하면 추후에 뒷감당을 할수 없는 야리꾸리한 코드가 나오기에 이를 미연에 방지하고자 수많은 검토사항중에 한가지였습니다.br /br /블로그에 이 소스를 흔적으로 남깁니다.br /br /br /검토결과br /~~~~~~br /br /getaddrinfo 에서 hints 인자는 매우 중요하다는 결론을 내렸습니다. 물론 NULL로 입력해도 대부분 무난하지만 호환성을 위해서는 hints를 잘 채워야 할것 같습니다.br /br /service 인자는 문자열로 입력을 받게 되는데 어떻게 보면 편한데 어떻게 보면 매우 불편합니다.br /하지만 깊은 뜻이 있다는 것을 알게 되었고 포트가 전부가 아니다 라는 계시를 받았습니다. ㅋbr /br /freeaddrinfo 함수를 잊고 안해주면 안되는것은 잊으면 안되는 사항이겠구요.br /br /AF_INET이 먼저냐 AF_INET6가 먼저 선행 노드로 존재하는냐가 결정이 되어 있으면 좋겠다 라는 생각이지만 테스트결과 현실은 순서는 믿을수 없었습니다.br /br /ai_addr 멤버가 inet_ntop에 이용되고자 할때 sin_addr 또는 sin6_addr은 같은 offset 위치를 같지 않기 때문에 간단한 코드가 되질 않는군요. 이 부분은 매우 불편한 구조가 될수밖에 없을거 같습니다.nbsp; 이래가지고는 분명 게으른 프로그래머는 대충 짜서 굉장히 불안한 코드가 나올수 있을거 같습니다. 게으른 프로그래머들에게 이부분을 맏기면 짜증 100배 될 소지가 있습니다.br /br /inet_ntop 함수는 기존의 inet_ntoa의 단점을 제거하였지만 사용하기에는 번거로워졌네요. 하지만 이게 올바른 구조라고 생각됩니다. inet_ntoa는 되도록이면 사용안하는것이 정신건강에 좋다는 의견 한표.br /br /br /br /br /일단 아래의 테스트코드를 통해서 확인된 검토결과들을 토대로 mzproxy (A href=http://kldp.net/projects/mzproxy/http://kldp.net/projects/mzproxy//A) 에다가 적용하여 v2.0.0-r2 로 release 했습니다. 당연히 잘 동작하는거 실제 IPv4 + IPv6 연동망에서 테스트 했구요.br /br /br /문제는 이 함수를 어떻게 GL(Glue Layer) 로 캡슐화된 API 를 설계하는가 인데 참 난감하네요.br /참으로 어정쩡한 GL API가 될 가능성이 높은 함수로 getaddrinfo 를 1위로 주고 싶은 생각이...br /br /br /#if defined(_WIN32) || defined(WIN32)br /# include lt;windows.hgt;br /# include lt;stdio.hgt;br /# include lt;signal.hgt;br /#elsebr /# include lt;sys/types.hgt;br /# include lt;sys/stat.hgt;br /# include lt;sys/times.hgt;br /# include lt;sys/time.hgt;br /# include lt;sys/socket.hgt;br /# include lt;stdio.hgt;br /# include lt;stdlib.hgt;br /# include lt;string.hgt;br /# include lt;unistd.hgt;br /# include lt;fcntl.hgt;br /# include lt;time.hgt;br /# include lt;signal.hgt;br /# include lt;setjmp.hgt;br /# include lt;time.hgt;br /# include lt;errno.hgt;br /# include lt;dlfcn.hgt;br /# include lt;netdb.hgt;br /# include lt;netinet/in.hgt;br /# include lt;arpa/inet.hgt;br /#endif/P P#if 0 amp;amp; (!defined(mz_dump))br /#include lt;stdio.hgt;br /static void * (__mz_dump_ex__)(size_t s_s, size_t s_d, void * s_da, size_t s_si)br /{ size_t s_o, s_w, s_lo; unsigned char s_b[ 16 + 1 ];br /nbsp;if(s_da == NULL)return(NULL); s_b[sizeof(s_b) - 1] = (unsigned char)'\0';br /nbsp;for(s_o = (size_t)0;s_o lt; s_si;s_o += (size_t)16){br /nbsp; s_w = ((s_si - s_o) lt;= ((size_t)16)) ? (s_si - s_o) : ((size_t)16);br /nbsp; (void)fprintf(stdout, %08lX, (unsigned long)(s_d + s_o));br /nbsp; for(s_lo = (size_t)0;s_lo lt; s_w;s_lo++){br /nbsp;nbsp; if(s_lo == ((size_t)(16 gt;gt; 1)))(void)fputs( | , stdout);br /nbsp;nbsp; else (void)fputs( , stdout);br /nbsp;nbsp; s_b[s_lo] = *(((unsigned char *)s_da) + (s_s + s_o + s_lo));br /nbsp;nbsp; (void)fprintf(stdout, %02X, (int)s_b[s_lo]);br /nbsp;nbsp; if((s_b[s_lo] amp; ((unsigned char)(1 lt;lt; 7))) || (s_b[s_lo] lt; ((unsigned char)' ')) ||br /nbsp; nbsp; nbsp; (s_b[s_lo] == ((unsigned char)0x7f)))s_b[s_lo] = (unsigned char)'.';}br /nbsp; while(s_lo lt; ((size_t)16)){br /nbsp;nbsp; if(s_lo == ((size_t)(16 gt;gt; 1)))(void)fputs( nbsp; nbsp; , stdout);br /nbsp;nbsp; else (void)fputs( nbsp; , stdout);br /nbsp;nbsp; s_b[s_lo] = (unsigned char)' '; s_lo++;}br /nbsp; (void)fprintf(stdout, [%s]\n, (char *)(amp;s_b[0]));}br /nbsp;return(s_da);br /}br /static __inline void * (mz_dump_ex)(size_t s_seek_offset, size_t s_display_offset, void * s_data, size_t s_size)br /{ return(__mz_dump_ex__(s_seek_offset, s_display_offset, s_data, s_size)); }br /#define mz_dump(m_data,m_size) mz_dump_ex((size_t)0,(size_t)0,(void *)(m_data),(size_t)(m_size))br /#endif/P Pint main(int s_argc, char **s_argv);/P Pvoid print_addrinfo(struct addrinfo *s_this)br /{br /nbsp; nbsp; /* ai_flags */br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_PASSIVE) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_PASSIVE\n);br /nbsp; nbsp; }br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_CANONNAME) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_CANONNAME\n);br /nbsp; nbsp; }br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_NUMERICHOST) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_NUMERICHOST\n);br /nbsp; nbsp; }br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_V4MAPPED) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_V4MAPPED\n);br /nbsp; nbsp; }br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_ALL) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_ALL\n);br /nbsp; nbsp; }br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_ADDRCONFIG) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_ADDRCONFIG\n);br /nbsp; nbsp; }br /#if defined(AI_IDN)br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_IDN) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_IDN\n);br /nbsp; nbsp; }br /#endifbr /#if defined(AI_CANONIDN)br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_CANONIDN) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_CANONIDN\n);br /nbsp; nbsp; }br /#endifbr /#if defined(AI_IDN_ALLOW_UNASSIGNED)br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_IDN_ALLOW_UNASSIGNED) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_IDN_ALLOW_UNASSIGNED\n);br /nbsp; nbsp; }br /#endifbr /#if defined(AI_IDN_USE_STD3_ASCII_RULES)br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_IDN_USE_STD3_ASCII_RULES) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: AI_IDN_USE_STD3_ASCII_RULES\n);br /nbsp; nbsp; }br /#endifbr /#if defined(AI_NUMERICSERV)br /nbsp; nbsp; if(s_this-gt;ai_flags amp; AI_NUMERICSERV) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, flags: NUMERICSERV\n);br /nbsp; nbsp; }br /#endif/P Pnbsp; nbsp; /* ai_family */br /nbsp; nbsp; if(s_this-gt;ai_family == AF_UNSPEC) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, family=%s\n, UNSPEC);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_family == AF_LOCAL) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, family=%s\n, LOCAL);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_family == AF_INET) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, family=%s\n, AF_INET);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_family == AF_INET6) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, family=%s\n, AF_INET6);br /nbsp; nbsp; }br /nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, family=%d\n, s_this-gt;ai_family);br /nbsp; nbsp; }/P Pnbsp; nbsp; /* ai_socktype */br /nbsp; nbsp; if(s_this-gt;ai_socktype == SOCK_DGRAM) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, socktype=%s\n, SOCK_DGRAM);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_socktype == SOCK_STREAM) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, socktype=%s\n, SOCK_STREAM);br /nbsp; nbsp; }br /nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, socktype=%d\n, s_this-gt;ai_socktype);br /nbsp; nbsp; }/P Pnbsp; nbsp; /* ai_protocol */br /nbsp; nbsp; if(s_this-gt;ai_protocol == IPPROTO_IP) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_IP);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_IPV6) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_IPV6);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_TCP) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_TCP);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_UDP) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_UDP);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_IGMP) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_IGMP);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_ICMP) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_ICMP);br /nbsp; nbsp; }br /nbsp; nbsp; else if(s_this-gt;ai_protocol == IPPROTO_ICMPV6) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%s\n, IPPROTO_ICMPV6);br /nbsp; nbsp; }br /nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, protocol=%d\n, s_this-gt;ai_protocol);br /nbsp; nbsp; }/P Pnbsp; nbsp; /* ai_addrlen */br /nbsp; nbsp; (void)fprintf(stdout, addrlen=%lu\n, (unsigned long)s_this-gt;ai_addrlen);/P Pnbsp; nbsp; /* ai_addr */br /nbsp; nbsp; if(s_this-gt;ai_addr != ((struct sockaddr *)0)) {br /nbsp; nbsp; nbsp; nbsp; char s_address_local[ 128 ];br /nbsp; nbsp; nbsp; nbsp; const char *s_address;br /nbsp; nbsp; nbsp; nbsp; struct sockaddr_in *s_sockaddr_in;br /nbsp; nbsp; nbsp; nbsp; struct sockaddr_in6 *s_sockaddr_in6;/P Pnbsp; nbsp; nbsp; nbsp; if(s_this-gt;ai_family == AF_INET) {br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; s_sockaddr_in = (struct sockaddr_in *)s_this-gt;ai_addr;br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; s_address = inet_ntop(s_this-gt;ai_family, (const void *)(amp;s_sockaddr_in-gt;sin_addr.s_addr), (char *)(amp;s_address_local[0]), (socklen_t)sizeof(s_address_local));br /nbsp; nbsp; nbsp; nbsp; }br /nbsp; nbsp; nbsp; nbsp; else if(s_this-gt;ai_family == AF_INET6) {br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; s_sockaddr_in6 = (struct sockaddr_in6 *)s_this-gt;ai_addr;br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; s_address = inet_ntop(s_this-gt;ai_family, (const void *)(amp;s_sockaddr_in6-gt;sin6_addr), (char *)(amp;s_address_local[0]), (socklen_t)sizeof(s_address_local));br /nbsp; nbsp; nbsp; nbsp; }br /nbsp; nbsp; nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; s_address = (const char *)0;br /nbsp; nbsp; nbsp; nbsp; }/P Pnbsp; nbsp; nbsp; nbsp; if(s_address != ((const char *)0)) {br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, addr=\%s\\n, s_address);br /nbsp; nbsp; nbsp; nbsp; }br /nbsp; nbsp; nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, addr=%s\n, UNKNOWN);br /nbsp; nbsp; nbsp; nbsp; }br /nbsp; nbsp; }br /nbsp; nbsp; else {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stdout, addr=%s\n, NULL);br /nbsp; nbsp; }/P Pnbsp; nbsp; /* ai_canonname */br /nbsp; nbsp; (void)fprintf(stdout, canonname=%s\n, (s_this-gt;ai_canonname != ((char *)0)) ? s_this-gt;ai_canonname : NULL);/P Pnbsp; nbsp; (void)fprintf(stdout, \n);br /}/P Pint main(int s_argc, char **s_argv)br /{/P Pnbsp; nbsp; struct addrinfo s_hints;br /nbsp; nbsp; struct addrinfo *s_result;br /nbsp; nbsp; struct addrinfo *s_this;br /nbsp; nbsp; int s_check;/P Pnbsp; nbsp; (void)memset((void *)(amp;s_hints), 0, sizeof(s_hints));br /nbsp; nbsp; s_hints.ai_family = AF_UNSPEC; /* IPv4 or IPv6 */br /nbsp; nbsp; s_hints.ai_socktype = SOCK_STREAM; /* UDP or TCP */br /nbsp; nbsp; s_hints.ai_flags = AI_PASSIVE; /* wildcard IP address */br /nbsp; nbsp; s_hints.ai_protocol = IPPROTO_TCP; /* any protocol */br /nbsp; nbsp; s_hints.ai_canonname = NULL;br /nbsp; nbsp; s_hints.ai_addr = NULL;br /nbsp; nbsp; s_hints.ai_next = NULL;/P Pnbsp; nbsp; s_check = getaddrinfo((s_argc gt;= 2) ? s_argv[1] : minzkn.com, http, (const struct addrinfo *)(amp;s_hints), (struct addrinfo **)(amp;s_result));br /nbsp; nbsp; if(s_check != 0) {br /nbsp; nbsp; nbsp; nbsp; (void)fprintf(stderr, getaddrinfo error: %s\n, gai_strerror(s_check));/P Pnbsp; nbsp; nbsp; nbsp; return(EXIT_FAILURE);br /nbsp; nbsp; }/P Pnbsp; nbsp; s_this = s_result;br /nbsp; nbsp; while(s_this != ((struct addrinfo *)0)) {br /nbsp; nbsp; nbsp; nbsp; print_addrinfo(s_this);/P Pnbsp; nbsp; nbsp; nbsp; s_this = s_this-gt;ai_next;br /nbsp; nbsp; }/P Pnbsp; nbsp; freeaddrinfo(s_result);/P Pnbsp; nbsp; return(EXIT_SUCCESS);br /}/P P/* End of source *//P
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/23 00:50 2008/06/23 00:50
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/267

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/267

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/267

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/267

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/267
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/267

DIV class=postbodySerial console 은 일반 Telnet console 과 다른 몇가지 제약이 있습니다.BR가장 먼저 Column과 Row 정보를 Terminal client (Minicom등과 같은) 로부터 전달받지 못합니다.BR그리고 Backspace 에 대한 정의가 다른 경우가 있습니다.BRBR이런 경우 stty 명령으로 이러한 제약을 해결할수 있습니다.BRBR가장 먼저 Column, Row 정보를 전달받지 못하여 발생하는 현상으로는BR명령행을 길게 적다가 오타가 나서 Backspace 로 쭉~ 지워나가다 보면 커서위치가 획~하고 엉뚱한곳으로 가버리는 경우가 있습니다.BR이경우 Terminal client 의 Columns를 Serial console 로 전달해주면 해결되는데BR만약 Terminal client 의 Columes 가 120 으로 사용하고 있다면 다음과 같이 명령행에 입력하면 됩니다.BR DIV class=codetitleBCode:/B/DIV DIV class=codecontentstty columns 120/DIVBR만약 Terminal client 의 columns를 정확히 모른다면 그냥 충분히 큰값으로 설정하면 무난히 사용할수 있습니다.BRBRBR두번째로 Backspace 관련 문제인데 Backspace 가 먹지 않는경우 및 일부 프로그램에서 입력받을때 보이기에는 제대로 입력한것처럼 보이나 실제 입력된 내용에 Backspace 가 저장되는 경우 (보통 Buffered stream 입력에서) 가 있습니다. BR이 경우 다음과 같이 그대로 명령행에서 입력하면 해결됩니다.BR DIV class=codetitleBCode:/B/DIV DIV class=codecontentstty erase ^H/DIVBRBR물론 man page 에서 stty 명령을 보시면 좀더 많은 제어가 필요할수도 있다는것을 알수 있을겁니다.BR하지만 보통 위에 설명한 두가지만 알면 왠만한 Serial console 은 정상적으로 이용하는데 불편하지 않을거 같습니다./DIV
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/20 07:42 2008/06/20 07:42
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/266

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/266

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/266

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/266

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/266
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/266

IPv6 2차 소스레벨 검토

minzkn™ 2008/06/18 12:48 장인정신
php가 IPv6를 제대로 지원하지 못한다고 생각이 들지 않았다.br /결국 내가 직접 흡사한 v6 소켓을 만들어 테스트 해본다고 해봤다.br /br /헉! 진작에 이렇게 해볼걸...br /br /적확히 원인을 파악했고 이를 수정했다. getaddrinfo 가 좀 문제가 있기는 한듯 하지만 해당 설정을 안하면 문제가 없게 된다.br /그리고 이제 2008년 6월 18일 현재부터 내 홈페이지는 IPv4 + IPv6 를 모두 동시 지원하게 되었다.br /드디어 IPv6를 실현하는구나~br /br /이제 남은것은 일본측의 실제 IPv6망과 연동테스트 계획만 남았다.br /br /br /br /br /원인:br /getaddrinfo가 /etc/resolv.conf 에 domain 항목이 존재하는 경우 이것을 무조건 선반환해버리는 특징이 있다. 이로 인하여 아무리 접속 시도해도 나 자신으로 접속을 하게 되는 것이다.br /해결책은 그냥 /etc/resolv.conf 에서 domain 항목을 제거하면 끝난다. 하지만 결정적으로는 이것이 올바른 방향성인지는 모르겠고 조사가 필요한듯 하다.br /br /br /그리고 좀더 낳은 방법을 찾았다. 게다가 젠투리눅스에서는 좀 편한부분을 발견했다.br /emerge net-misc/freenet6br /이렇게 하여 freenet6.net을 터널 브로커로 이용하는 방법이다.br /익명도 가능하기 때문에 매우 편리한 면이 있다.br /정신건강에는 터널브로커 이용이 훨씬 편한것으로 생각된다.br /
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/18 12:48 2008/06/18 12:48
받은 트랙백이 없고, 댓글 span class="cnt"하나/span가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/265

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/265

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/265

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/265

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/265
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/265
  1. alones 2008/06/30 12:25  댓글주소  수정/삭제  댓글쓰기

    minzkn 님 얼굴을 뵙게 되는군요 :)

2008년 6월 14일BRnbsp;- 선유도로 바람쐬러 산책BR2008년 6월 15일BRnbsp;- STRONG그대를 사랑합니다 연극 공연 (눈물 콧물 펑펑~ ^^)BR/STRONGnbsp;- 연세대학교에 놀러감BRBRBR그대를 사랑합니다 공연을 보았습니다. 아직 예매기회가 남았다면 다른분들께도 추천합니다. 기회가 되신다면 한번 꼭 보시라고 하고 싶습니다.BRBRBRBRBR
사용자
여친과 함께 6월 14일 선유도로 바람쐬러 갔습니다. 역시 토요일에는 사람이 넘쳐나는군요.BRBRBR
사용자
사용자
인파는 상당히 많았지만 잘 꾸며져 있고 시우너하기도 하고 멋진 풍경이 선유도로 사람들을 이끌어 내는 원동력임이 느껴지네요.BRBRBR
사용자
선유도에 잘 꾸며진 생태환경이 너무나 아름다웠습니다.BRBRBR
사용자
핑클의 이효리가 광고에 나오는 콩으로 만든 테xx 음료수 한잔을 자판기에서 뽑아들고 BR선유도내에 있는 정자그늘아래서 엄청 시원한 바람을 맞으며 더위를 달랬습니다.BR어느덧 해는 저물어 가면서 저 멀리 다리에 불빛이 하나둘씩 늘어만 갔습니다.BRBRBRBR
사용자
시원함을 뒤로 하고 선유도를 나오려는데 토끼 한마리가 풀을 뜯어 먹느라 바쁜 모습이 보여서 한컷 찍었습니다.BRBRBRBR6월 15일---------BR
사용자
한달전에 아! 이 공연 감동이겠다고 확~ feel 이 느껴져서 예약했던 그대를 사랑합니다 공연을 드디어 오늘! 보게 되었습니다.BRBRBRBRBR
사용자
사용자
사용자
사용자
사용자
사용자
사용자
사용자
아~ 한달전에 예약해서 그토록 기대했었던 이 연극을 본 사람이라면 그 감동에 눈물, 콧물 나올수밖에 없습니다. 진짜 감동이었고 배우들도 다들 알만한 배우들이라서 연기력도 부족함이 전혀 없었습니다. 그리고 극에 대한 몰입도가 상당히 높게 구성되어 있어서 정말 재밌게 봤습니다.BR강력히 추천하고 싶은 연극입니다. 다들 아직 예매기회가 있다면 한번 꼭 보세요!BRBRBR
사용자
사용자
사용자
연극을 보고나서 여운이 아직 남은 상태에서 연세대학교에 들어가서 여친과 오붓한 데이트를 했습니다. 나무들이 푸르고 상쾌한 풍경을 조성하고 있더구요. 군데군데 풀숲에서 짜장면 시켜먹는 사람들이 많았습니다. ㅋㅋ 맞있는 냄새가....BR여기저기 연세대학교 구석구석 돌아다니다가 목이 말라서 어제 마셨던 이효리가 광고하던 그 음료수를 먹자고 여친에게 말하려는데 제가 그 음료수 이름이 기억이 안나더군요. 그래서 이렇게 이야기 했습니다.BRBRSTRONG목마르다. 어제 먹었던 콩 국물 먹을까?/STRONGBRBR허걱~~~~~~ 콩국물~ 그리고 연이어 보리차를 먹을까 제안을 이렇게 했습니다. ㅡㅡ;BRBRSTRONG아니면 보리국물 먹을까/STRONG?BRBR어허라~~~~ 콩국물에 이어서 보리국물~ OoO;BR이야기 해놓고도 저도 웃겨 웃어버렸습니다. 왜 국물이라는 단어가 잘 떠오르지?BRBRBRBR//BR
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/15 22:58 2008/06/15 22:58
받은 트랙백이 없고, 댓글 2개가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/264

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/264

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/264

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/264

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/264
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/264
  1. appler 2008/06/16 10:50  댓글주소  수정/삭제  댓글쓰기

    선유도..

    공짠가염?-_-;;


    강풀 작가님이 만화는 거의 대부분 감동깊게 봐서

    연극도 한번 보면 재밌을것 같군요..

    연극은 태어나서 2번 봤는데

    영화랑은 다르게 사실감이며 몰입도가 무척이나 높아서

    슬픈 내용이라면

    가서 펑펑울듯..ㅎㅎ

    • minzkn 2008/06/16 19:48  댓글주소  수정/삭제

      선유도 무료입장 되고요. 24시까지 하더군요.
      강풀작가님의 연극이 대세인듯 합니다.
      CATs 공연도 보고싶기는 했지만 비용도 만만치 않고 자리도 좋은자리가 없네요. ㅡㅡ;

IPv6 검토결과 몇가지 정리

minzkn™ 2008/06/12 23:39 장인정신
Pbr /br /먼저 이 글은 불완전한 내용을 담고 있기에 외부로 스크랩하지 않으셨으면 좋겠다는 서두를 남깁니다.br /br /br /본 서버에서 지난주부터 IPv6관련 검토사항들을 산발적으로 수행하였고br /몇가지 문제점이 드러났으며 이에 해당 부분에 대하여 간략한 정리좀 해둡니다.br /br /br /STRONG초기준비작업 #1 (IPv6주소할당)br /~~~~~~~~~~~~~~~~~~~~br //STRONGbr /IPv6 주소를 할당받아야 합니다. 하지만 Network 기반이 잘되어 있는 우리나라치고는U IPv6 실험하기에 암울한 현실에/U 놀랐습니다. 결국 IPv6할당받는것은 좌절하게 되었습니다.br /br /STRONG초기준비작업 #2 (IPv4주소할당)br /~~~~~~~~~~~~~~~~~~~~br //STRONGbr /서버를 굳이 IDC에 넣지 않고도 얼마든지 더 빵빵한 네트웍에 돌릴수 있음에도 불구하고 IDC에 넣은 이유이기도 합니다. 바로 UIPv4 고정주소를 할당받기 위함이지요/U. 물론 고정주소 아니라도 프로그램 약간 작성해서 동적으로 터널링 적응하도록 할수도 있을법 하지만 남는시간은 없는지라 그냥 속편하게 IDC에 무작정 입주시켰습니다.br /br /STRONG초기준비작업 #3 (6to4nbsp; 터널링 환경구축)br /~~~~~~~~~~~~~~~~~~~~~~~~~br //STRONGbr /가볍게 호스팅업체에 물어봤습니다.br /br /여기 IDC는 IPv6지원하나요? 지원하지 않는다면 계획이라도 있습니까?br /br /기다림없이 바로 답변을 주시더군요. br /br /지원안하고요. 현재 계획이 전혀 없습니다.br /br /결국 쉽게 IPv6테스트는 포기하고 할당받은 IPv4주소를 통하여 U6to4 터널링으로 실험하기로/U 결정하였습니다.br /br /아무래도 원격에서 6to4 터널링을 설정하기에는 위험부담이 굉장히 높았습니다.br /왜냐하면 잘못하면 네트웍두절상태가 되면서 IDC를 방문해서 복구해야 하는 원하지 않는 사태가 벌어질수도 있기 때문이죠.br /br /굉장히 신중한 검토끝에 설정포인트를 메모하고 별도의 VM에서 실험을 해보고 확실하다는 판단하게 이것을 적용하여 본 서버에 적용하였습니다.br /br /다행히 네트웍 두절사태는 없었고 터널링 설정도 잘 되었습니다. bonding 에다가 터널링에다가 방화벽도 고려해야 하는 상황이 복잡하기는 하지만 어쟀건 한번에 성공한것으로 마음이 놓이더군요.br /br /IPv6환경 구축하려면 Uiproute2 패키지는 꼭 설치하는게 좋습니다/U. (필수는 아니지만 있으면 편함)br /br /br /STRONG본 서버의 IPv6 환경 요약br /~~~~~~~~~~~~~~~br //STRONGbr /다음과 같이 성공적인 라우팅 테이블이 설정되었습니다.br /br /EMsh$/EM /sbin/route -A inet6br /Kernel IPv6 routing tablebr /Destination nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; Next Hop nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; Flags Metric Ref nbsp;nbsp; Use Ifacebr /::1/128 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 0 nbsp; nbsp;nbsp; 6014 nbsp; nbsp; nbsp; 1 lobr /::121.78.118.125/128 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 0 nbsp; nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 1 lobr /::/96 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 1 nbsp; nbsp; nbsp;nbsp; 0 6to4br /2002:794e:767d::1/128 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 0 nbsp; nbsp;nbsp; 401 nbsp; nbsp; nbsp; 1 lobr /2002:794e:767d::1/128 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 6to4br /STRONG2000::/3 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; ::x.x.x.x nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; UG nbsp;nbsp; 2 nbsp; nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 6to4/STRONGbr /fe80::X:X:X:X/128 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 0 nbsp; nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 1 lobr /fe80::/64 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 bond0br /fe80::/64 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 6to4br /ff00::/8 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 bond0br /ff00::/8 nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; :: nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;nbsp; U nbsp; nbsp; 256 nbsp;nbsp; 0 nbsp; nbsp; nbsp;nbsp; 0 6to4br /br /br /STRONG좌절 1탄 (ping할 상대를 구하기 어렵다)br /~~~~~~~~~~~~~~~~~~~~~~~~~/STRONGbr /br /이제 이게 되는지 확인은 해야 되겠지요?br /근데 문제는 Uping을 테스트할 목적지가 없는것이었습니다/U.br /지금이라도 누군가가 ping6 를 테스트할 주소를 알려주시면 좋겠습니다. br /ping도 못해보고 현재 상태는 완전 좌절입니다. U인터넷에 검색해보면 다들 어디서 IPv6개론만 잔뜩 붙여넣은거만 검색되서 짜증 100 배 입니다/U. 검색하다가 보면 눈 아픕니다.br /br /STRONG좌절 2탄 (php 의 fopen 문제)br /~~~~~~~~~~~~~~~~~~~/STRONGbr /br /Uphp의 fopen url open을 허용하고 외부사이트를 open해보면 IPv6주소가 잡혀있으면 실패하게 됩니다/U. 대충 다음의 링크와 유사한 현상입니다.br /br /A href=http://bugs.php.net/bug.php?id=11058http://bugs.php.net/bug.php?id=11058/Abr /br /그리고 검색하다가 또 한번 짜증 100배 상승하게 됩니다. 이 문제를 저만 겪는것은 아니었고 이미 질문도 꽤 있었지만 답변은 php를 IPv6 지원 옵션 제거하고 사용해라는 원치 않는 답변뿐이었습니다.br /br /혹시 이 부분에 대해서 IPv6지원옵션 제거하는 의미없는 해결책 말고 좋은 해결법을 알고계시면 저에게 알려주시면 감사하겠습니다.br /br /br /STRONG좌절 3탄 (접속실패도 아니고 나한테 부메랑되어 접속시도)br /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/STRONGbr /br /이건 좀 보안상 문제될 사안인것 같아서 자세히는 적지 않겠습니다.br /간단히 요약하면 br /UIPv4 전용 프로그램이거나 IPv6와 IPv4동시지원이 고려되지 않고 옵션에 의해서 선택하여 사용하는 프로그램들은 외부로 접속을 시도하게 의도하여 실행하였으나 외부로 접속하지 않고 엉뚱하게도 내부 local 로 접속시도하는 현상을 몇몇 프로그램들이 보였습니다/U.br /br /rsync도 그중에 한가지인데 다행히 U--ipv4/U 옵션으로 강제할수 있어서 피해갈 방법이 있는 경우도 많았습니다.br /br /또한가지 재밌는것은 STRONGUblog의 트랙백을 날릴수 없었습니다/U/STRONG. 완전 고립된 서버가 되는것이죠. ㅡㅡ;br /br /그 밖에 세밀하게 파고들면 답답하게 안되는게 많습니다.br /br /br /STRONGIPv6의 미래와 향후 발전에 대한 걱정br /~~~~~~~~~~~~~~~~~~~~~~br //STRONGbr /U일본은 벌써 IPv6 준비가 끝나서 관련 상세스펙도 전달받을수 있었습니다/U.br /하지만 우리나라는 제가 국내동향을 잘 모르고 하는 소리일지도 모르겠지만 저에게는 적어도 완전 U암흑의 공간이었습니다/U.br /br /br /STRONG마지막으로 간략히 6to4 터널링 방법에 대한 초단간 메모br /~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~br //STRONGbr /사전에 준비할것은 Kernel 옵션에 6to4 터널링 관련 옵션이 활성화 되어 있어야 합니다.br /br /올바르게 6to4를 커널이 지원한다면 ifconfig -a 명령으로 확인했을때 Usit0 가 있을겁니다/U. 이것이 확인되어야 실험환경 준비가 됩니다. (예전에 sit0 가 뭐하는건데 쓸데없이 있는거냐고 투덜된것이 기억나네요)br /br /본 서버에 할당된 IPv4가 121.78.118.125 입니다. 이것을 터널링주소대역으로 변환하면 2002:794E:767D 주소가 제 서버의 IPv6터널링에 사용하는 주소가 됩니다.br /br /1. 먼저 6to4장치를 생성해야 합니다. 이것은 sit 로부터 생성됩니다. (여기서 6to4는 그냥 알아보기 좋게 붙인 이름일뿐 U다르게 부여해도 됩니다/U. 어떤사람은 tun6to4가 더 보기 좋다고 하는군요.)br /br /nbsp; nbsp; /sbin/iptunnel add EMSTRONG6to4/STRONG/EM mode sit ttl 64 remote any local 121.78.118.125br /br /2. 6to4를 만들었으면 여기에 IPv6 터널링 global 주소를 추가합니다.br /br /nbsp; nbsp; /sbin/ifconfig 6to4 upbr /nbsp; nbsp; /sbin/ifconfig 6to4 add 2002:794E:767D::1/16/P P3. 통과할 route를 잡아야 겠죠? 여기서 192.88.99.1과 203.254.38.130 두가지 선택을 예로 들었는데 전자는 외국쪽으로 가는거고 후자는 국내에 있다고 얼핏 기억나네요. 저는 192.88.99.1 로 했습니다. 선택은 맘대로~br /br /nbsp; nbsp; /sbin/route -A inet6 add 2000::/3 gw STRONG::192.88.99.1/STRONG metric 2 6to4br /nbsp; nbsp; # /sbin/route -A inet6 add 2000::/3 gw STRONG::203.254.38.130/STRONG metric 2 6to4br /br /4. 여기까지 하면 IPv6 터널링 준비 끝.br /nbsp; nbsp; 하지만 UGentoo Linux 사용자분들이라면 /etc/cont.d/net에 다음과 같이 해주면 그냥 됩니다./U (여기서 본 서버는 bond0 를 사용하고 있어서 이렇게 한것이고 eth0라면 eth0 로 하셔야 하는 센스는 발휘하셔야 합니다.) br /br /nbsp; nbsp; iptunnel_6to4=mode sit ttl 64 remote any local 121.78.118.125br /nbsp; nbsp; link_6to4=bond0br /nbsp; nbsp; config_6to4=(2002:794E:767D::1)br /nbsp; nbsp; routes_6to4=(2000::/3 gw ::192.88.99.1 metric 2)br /nbsp; nbsp; RC_NEED_6to4=net.bond0br /br /5. 이제 6to4 를 올렸으면 내릴수도 있어야 하는데 내릴때는 다음과 같이 역순으로 밝아가시면 됩니다. 근데 진짜로 이거 U순서 잘못하거나 대충 건너뛰면 통신이 미쳐버릴수도 있습니다/U. 부디 그런일이 안생기도록 주의하세요.br /br /nbsp; nbsp; /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 metric 2 6to4br /nbsp; nbsp; # /sbin/route -A inet6 del 2000::/3 gw ::203.254.38.130nbsp; metric 2 6to4br /nbsp; nbsp; /sbin/ifconfig 6to4 downbr /nbsp; nbsp; /sbin/iptunnel del 6to4br /br /6. 여기까지는 실제로 iproute2를 사용하지 않고 설정하는 방법이었습니다. iproute2를 사용하시는 방법으로 시도하시는것을 추천하겠으나 그 방법은 소개하지 않겠습니다. 그리고 방화벽은 IPv4는 iptables를 사용하시고 IPv6는 ip6tables 를 사용하여야 합니다. 앞으로 IPv6가 정착되기 이전에 iptables 와 ip6tables 가 합쳐졌으면 하는 바램을 마지막으로 남겨봅니다.br /br /br /br /작성자: 조재혁 A href=mailto:minzkn@minzkn.commailto:minzkn@minzkn.com/A, A href=http://www.minzkn.com/http://www.minzkn.com//Abr /작성일: 2008년 6월 11일br /br /br //* End of 대충메모 */br /br /br /br /br /br //P
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/12 23:39 2008/06/12 23:39
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/263

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/263

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/263

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/263

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/263
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/263

Gentoo linux 비공식 미러링 개시

minzkn™ 2008/06/11 08:04 장인정신
2008년 6월 11일 현재부터 Gentoo linux STRONG비공식/STRONG 미러링을 시작했습니다.br /br /이거 초기 미러링 받기 위해서 준비하는게 좀 걸리네요.br /미러링 주소는 아래와 같습니다.br /br /A href=http://files.minzkn.com/mirror/gentoo/http://files.minzkn.com/mirror/gentoo//Abr /br /공식 미러링 하기에는 서버가 폭발할거 같아서 그렇게는 못하겠구br /살짝만 공개합니다.br /br /미러링 주기는 A href=ftp://ftp.ussg.iu.eduftp.ussg.iu.edu/A 로부터 STRONG약 4시간 주기로 할까 생각중입니다/STRONG.br /br /Gentoo linux 미러링 하면 용량이 얼마나 될까 궁굼했었는데br /br /2008년 6월 11일 기준 STRONG총 용량이 98GBytes/STRONG 정도 되고br /그중에서 distfiles 가 약 60GBytes 정도 되는군요.br /releases 는 약 25GBytes, experimental는 약 13GBytes 입니다.br /br /실험적으로 해보는 비공식 미러링이니 접속불능일때도 있을수 있고 그래서 추천하지는 않습니다. ^^;
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/11 08:04 2008/06/11 08:04
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/262

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/262

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/262

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/262

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/262
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/262

PLDAP좀 구축해보려고 하다가 포기했습니다.br /br /제가 왠만한 삽질에 대해서는 적응을 좀 한다고 생각했는데br /OpenLDAP를 사용하려고 하다가 보니 이건 좀 아니다라는 생각이 드네요.br /br /너무 어렵기도 하고 설정들이 확 와닫지도 않는군요.br /무엇하나 머리에 안들어오는 시스템인듯 느껴집니다.br /br /결국 수차례 검토하다가 좌절하고 포기하고 이렇게 글을 씁니다.br /br /Qmail + Vpopmail + Courier-imap + stunnel 조합의 설치할때도 약간 그런 느낌이었습니다만 이정도는 아니었던것 같습니다. ㅡㅡ;br /br /binutils + gcc + glibc + stdc++ 의 Cross toolchain 빌드하는 경우에도 이정도는 아니었던것 같습니다. --; (버젼궁합패치 해보신분은 이해하시겠죠?)br /br /진짜 어렵군요. OpenLDAP!br /이대로 포기할것인가? 아니면 재도전할것인가? 기로에 서있습니다.br /br /br /br /PS.br /br /nbsp;게다가 Gaim 재설치 해보려고 하다가 ... 헉! 이게 이름이 pidgin 으로 바뀌어야 하는 안타까운 소식도 보았네요. ㅡㅡ;br /br /nbsp;Fuse의 sshfs 는 제대로 되었는데 shfs 는 또 삽질을 요구했고.... fuse 이거 맘에 들기는 함.br /br /NFSd가 방화벽 뒤에 있을때 이것을 여는것 또한 이런생각들죠. 내가 이거 왜 해야 하는거야?br /br /발전해나가는 *nix 이지만 아직도 많이 부족하고 참여가 필요한 프로젝트가 많다는것을 다시금 생각하면서...br /br /문서화 하여 다른이들이 볼수 있게 하면 적어도 이 문서를 보는 사람들은br /삽질할일이 없겠지 하고 생각했었고 참여도는 미미하지만 일부는br /문서화 한다고 실천한적이 있습니다. br /br /오늘 문득 생각이 들었습니다.br /br /문서화 보다는 실제 해당 패키지의 편리성을 추구하는 개선에 동참하는게 더 좋겠다는 생각을 말이죠.br /br /패키지 사용이 쉬우면 문서화가 필요 없는데 말이죠.... *nix 계열의 패키는 공통점이 그런 부분이라고 생각합니다. 물론 전부 그런것은 아니지만 ...br /br /br /br /br /br //P
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/10 20:42 2008/06/10 20:42
받은 트랙백이 없고, 댓글 2개가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/261

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/261

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/261

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/261

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/261
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/261
  1. appler 2008/06/11 09:05  댓글주소  수정/삭제  댓글쓰기

    얼마나 고생하셨는지..

    노고가 느껴지는 글이군요...

    저는 전혀 해보지는 않지만....

    이해할수 있다니 저도참 신기하군요..

  2. sentigra 2008/11/27 16:20  댓글주소  수정/삭제  댓글쓰기

    전 급실망하고 있는 중입니다.ㅠㅠ;

ㅋㅋ 발칙한 상상을 해봤고 실험삼아서 해봤다.br /br /방법은 의외로 간단하다.br /내 서버로 오는 해킹경로를 이미 기존에 파악했던 다른 해킹서버쪽으로br /접근 경로를 돌려버리는거다. 즉, 해킹서버들은 내 서버를 공격한줄알겠지만br /실제로는 내 서버는 패킷을 바로 bypass시켜 다른 해킹서버쪽으로 돌려버린다는 취지이다.br /br /해킹서버들끼리 싸움을 붙여보는 상상이 얼마나 재밌는가?br /그리고 통쾌하기까지 할거 같다.br /지들끼리 해킹시도하고 지들끼리 싸우게 말이다.br /아래는 파악된 서버들 중에서 일부만 열거해본다. 이 아이피들은 일단 가볍게 나의 실험대상이다. ㅋㅋ 물론 이중에서 악의가 없는 서버인데 경유지가 되서 오해받을 서버도 있을수 있기 때문에 앞자리는 공개하지 않겠다.br /br /x.212.219.61br /x.215.218.34br /x.57.230.22br /x.206.75.210br /x.25.161.55br /x.243.178.34br /x.161.164.151br /x.69.89.123br /x.246.68.204br /x.24.175.173br /br /요즘에는 해킹서버들이 접근시도하면 이를 막는 방법으로는 그냥 모니터링하다가 Blocking 하는 방법밖에 없는게 현재의 인터넷환경이 처한 현실이다.br /법적인 대응을 해도 워낙 수가 많고 외국에 서버를 두는게 많아서 대응하기도 쉽지 않다.br /br /그리고 나도 귀찮아서라도 대응하기 정말 싫다. 정신건강에 해롭기도 하고....br /그래서 생각한것이 지들끼리 상호 공격/방어자가 되도록 타이틀 매치를시켜보는것이다 ㅋㅋbr /재밌는 발상 아닐까?br /br /br /실험은 간단하다.br /예전에 만들었었던 요걸 약간 실험용으로 손보고br /br /UDP bypass : A href=http://bbs.minzkn.com/viewtopic.php?t=689http://bbs.minzkn.com/viewtopic.php?t=689/Abr /TCP proxy : A href=http://kldp.net/projects/mzproxy/http://kldp.net/projects/mzproxy//Abr /br /그냥 내 서버로 오는거 테니스공 받아치듯 반대편 해킹서버로 돌려버린다.br /br /근데 생각처럼 재밌지는 않다. 뭐가 보여야지 재밌지 ㅋㅋbr /mzproxy 의 경우는 -v 옵션을 주면 중간에 오고가는 패킷을 볼수는 있다.br /하지만 SSH는 중간에 암호화가 되어 있기 때문에 좀 많이 손봐야 볼수 있다.br /중간에 암호 해독하는것은 난해할지 몰라도 proxy를 거쳐갈때는 불가능할거 같지는 않다.br /근데 재미가 없는것은 여기서부터다. br /복잡하게 이걸 왜 만들어야 하는거야?br /라는 생각이 든다. 여기까지가 나의 실험이었다. 지금도 내 서버쪽 SSH는 내 서버가 받는게 아니다. 위의 해킹서버들중에 하나로 접속시도하는것이 된다. ㅋbr /br /br /공격의 유형은 상당히 많다. 그중에서 가장 많은 편에 속하는것이 SSH port 22 에 대한 br /DoS attack 이다. (얼마전에 이와 관련된 글을 썼었다.)br /무식한 방법이지만 의외로 확률 높고 시간만 충분하다면 SSH 가 열린 서버라면 언젠가는 뚫리게 되는 무서운 공격이다.br /물론 깨어있는 서버 관리자라면 지속적인 모니터링과 CPS 설정을 해 놨을것이다. 그래도 꺼림직하다.br /br /설마 자신의 서버암호가 5글자 이하인분은 나중에 후회하기 전에 그 이상으로 변경하길 바란다. 5글자 이하이고 알파벳 또는 숫자로만 구성되었고 CPS설정이 되어 있지 않다면 뚫리는것은 시간문제다. 컴퓨터는 단순 무식한 행동은 무지 잘한다.br /도저히 못믿겠다는 분께서는 내가 실습을 시켜드리겠다. 일단 아래의 소스를 받는다.br /A href=http://bbs.minzkn.com/viewtopic.php?t=443http://bbs.minzkn.com/viewtopic.php?t=443/Abr /그리고 간단히 test용 계정하나를 만들고 5자리이하의 알파벳+숫자 조합으로 암호를 걸어보시라...br /그리고 위의 링크에서 받은 소스를 컴파일해서 mzpwcrack이라는 실행파일을 사용해서 mzpwcrack lt;test계정이름gt; 을 root 유저에서 실행해보시라... 컴퓨터 성능이 좋다면 수십분에서 수십시간이면 암호가 떡하니 출력될거다.br /이것이 바로 DoS Attack의 기초구현이다. 생각해보시라. 아무리 복잡한 암호화 방식을 취했다고 해도 이런식으로 공격한다면 언젠가는 뚫릴수 있지 않겠는가?br /물론 위의 예제 소스는 해킹하려고 만든 소스가 절대로 아니다. 본래 취약점을 경고하고자 예제로 만들어 소개하기 위해서 만든것뿐이다.br /br /br /하고싶은말은 이거다.br /공격은 방어에 비해서 쉽다.br /하지만 방어는 공격보다 수십배~수백배 어렵다.br /나는 결코 공격자를 존경하지 않는다.br /해킹방어자들을 존경한다. 그리고 박수를 보낸다.br /br /나는 방어를 연구한다. 그리고 그중에서 한가지 아이디어를 제안한다. 공격탐지후 해당 패킷을 Blocking 하지 말고 다른 공격자에게 패킷을 돌려서 상호 타이틀 매치를 하게 하면 어떨까라고 말이다... 재밌을거 같은데 아닌가?br /br /br /br /br /
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/06/09 00:31 2008/06/09 00:31
받은 트랙백이 없고, 댓글 7개가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/260

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/260

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

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/260

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/260

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/260
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/260
  1. appler 2008/06/09 10:03  댓글주소  수정/삭제  댓글쓰기

    재미있겠군요,,;;

    공격자의 구분은 어떻게 정의 하셧는지?

    • minzkn 2008/06/09 11:12  댓글주소  수정/삭제

      위의 실험에서 공격기준은
      SSH port로의 사전식 로그인 시도가 있는 경우를 공격자로 정의합니다.

  2. yundream 2008/06/09 16:44  댓글주소  수정/삭제  댓글쓰기

    제일 난감할때가..
    패스워드 복잡한걸로 했다가.. 기억나지 않을때....

    • minzkn 2008/06/13 00:00  댓글주소  수정/삭제

      까짓거 다시 설치하면 되죠~
      이세상이 신뢰로 움직인다면 암호가 필요없을텐데요...
      데이터 파티션과 OS파티션만 철저히 분리하면 1시간만 다시 투자하시면 ㅋ

  3. hkpco 2008/06/09 18:31  댓글주소  수정/삭제  댓글쓰기

    재미있네요..ㅎㅎ

    • minzkn 2008/06/13 00:07  댓글주소  수정/삭제

      IP 추적좀 해봤는데 DoS Atack이 제일 많은 나라는 중국이었습니다. (제 서버의 로그기준)

      1위: 중국
      2위: 인도
      3위: 러시아
      4위: 미국
      5위: 한국

      중국으로부터 오는 모든 대역을 완전 거부하고 싶을정도로 높은 비중을 차지한다는게 짜증나는 일이군요. TV에서 듣던 안보이는 전쟁입니다.

  4. n0fate 2008/06/15 00:02  댓글주소  수정/삭제  댓글쓰기

    재미있는 발상인 것 같습니다^^

    joinc위키 들렸다가 글이 보여서 방문하게 되었네요^^

2008년 5월 31일BRBR1. KOBA 2008 전시회 참관BR2. V.O.S 콘서트 관람BR3. 서울역 근처 촛불집회 현장에서 잠깐...BRBRBRSTRONGKOBA 2008 전시회 참관BR~~~~~~~~~~~~~~~/STRONGBRBR각종 영상/음향기기들을 보러 KOBA전시회에 갔다.BR오전 10시에 입장해서 오후 12:30 정도까지 약 2시간 30분에 걸쳐서 봤다.BR특별히 내눈에 띄는 것은 그리 많지 않았고BR특정 부스들에서 나눠주는 STRONG사탕과 쇼핑백, CD몇장 이 오늘의 수확이다/STRONG. ㅎㅎBRBRU역시 전시회 가면 가장 먼저 찾는게 쇼핑백 나눠주는 부스를 찾는일이 우선이다 ㅋㅋ/UBRBR
사용자
이건 지나가는 원숭이(원숭이도 아니고 돼지도 아니여~)를 강제로 붙잡아다가 사진한컷 찍었다. ㅋㅋ 이 원숭이 처음에는 깐깐하게 등을 돌리더라~ 사진상으로는 안보이지만 뒤에서 STRONG강제로 내가 잡고 찍었다/STRONG ㅋㅋ 내 여친이랑 찍을때는 순순히 찍더군 ㅡㅡ;BR찍고 보니 은근히 원숭이 귀가 내 볼을 억누르고 있다.BRBRBRBRSTRONGV.O.S 콘서트 관람BR~~~~~~~~~~~~/STRONGBRBR보고싶은 날에~ 울고싶은날에~ 그리운날에~ BRBRSTRONGV.O.S/STRONG의 STRONG공짜티켓을 여친이 어떻게 구해서 어린이대공원을/STRONG 갔다.BRSTRONG공연은 4시였고/STRONG 우리는 2시에 대공원에 입장했다.BR입장할때 조류문제로 발바닥 소독이 좀 있었다. (이게 과연 효용이 있는건가?)BRBRBR
사용자
지하철 입구에서 내리자 V.O.S콘서트를 알리는 포스트및 안내표지판이 쉽게 눈에 들어왔다.BRBRBR
사용자
사용자
사용자
공연이 4시니까 2시에 도착했으니 기다리는 2시간의 공백동안 근처 풍경을 좀 사진으로 찍어봤다.BRBRBRBR
사용자
콘서트 시작 30분전에 입장이 시작되었다. 위 사진은 입장할때 줄서서 기다리고 있는중에 한컷.BRBRBR
사용자
V.O.S 콘서트장 시작하기전에 찍어봤다. 물론 STRONG공연중에는 촬영이 금지되어 있기 때문에 아쉽지만 찍지 않았다.BR/STRONGBRBR
사용자
사용자
사용자
집에 돌아가는중에 서울역 근처를 지나게 되었는데BR헉! STRONG촛불집회하시는 분들이 대규모 이동을 시작했다/STRONG.BR경찰병력들이 도로를 차단해버렸다.BR때문에 나는 버스타고 가다가 오도가도 못하는 신세가 되고 말았다.BRBR결국 정체된 도로한가운데서 버스를 내렸고 촛불 행렬을 거슬러 지하쳘로 발걸을음 돌렸다.BR위 사진은 지하쳘로 가는도중 수많은 촛불 행렬을 역사의 기록으로 남기기 위해서 한컷 찍었다.BR여기 사진에 찍힌 사람들보다 실제로 사람이 굉장히 많은 인파를 이루었다.BRSTRONG진짜 사람들이 많았다.BR/STRONGBR쇠고기문제가 어떻게 끝날지 모르지만 적어도 내가 정책을 책임지는 사람이라면 BR이러한 국민들의 뜻을 충분히 수렴해야 할듯 싶다. 한두명도 아니고 STRONG정말 많은 국민들의 염원을 정책 책임자는 모른다고 계속 가만히 있을것인가?/STRONGBRBRBRBR아래는 기타 찍었던 사진들...BR
사용자
사용자
사용자
사용자
사용자
사용자
사용자
사용자
사용자
사용자
BR
크리에이티브 커먼즈 라이센스
Creative Commons License