Archive for the ‘Uncategorized’ Category
Conceptual Architecture Checklist
Just bookmark
http://it.toolbox.com/blogs/enterprise-solutions/conceptual-architecture-checklist-22364
su 명령을 wheel 그룹만 허용하기..
$ chown root.wheel /bin/su $ chmod 4750 /bin/su $ chattr +i /bin/su
근데 말이다.. su 명령은 아예 막고, sudo만 사용하게 하는건 어떨까?
keepalived를 설정하는데… vrid가 중복이네??
keepalived를 설정하는데 receive an invalid ip number count associated with VRID! 라는 로그가 계속 나온다. 말그대로 VRID로 받은 패킷의 IP 갯수와 설정된 IP 갯수가 다르다는데, 엇뜬 이해하기가 힘들다.
고민해보니깐.. VRID가 중복된 것 아닐까? 이 네트웍에 다른 vrrp가 동작하는 것이 아닐까하고 VRID를 바꾸니까 동작한다.
금방 바꿔서 문제를 해결했지만, 이런 문제를 사전에 인지하려면 뭔가 방법이 필요했다. 현제 네트웍에서 사용중인 VRID를 모두 알 수 없을까??? 여기저기 자료를 찾아봤지만, 이런 문제에 대한 직접적인 해결 방법은 찾을 수 없었다.
그러다가 눈에 띈게 vrrp 프로토콜은 224.0.0.18로 boradcasting한다는 사실. 그리고 keepalived에서 vrrp는 기본 설정상 1초에 1번 vrrp advertising을 한다는 것.. 라서 해당 224.0.0.18와 통신하는 것을 패킷을 보면 vrid가 나오겠구나 생각하고 해봤는데..
$ sudo tcpdump -i eth0 host 224.0.0.18 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 19:17:30.574665 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 28 19:17:30.574676 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 28 19:17:30.574770 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 2, prio 101, authtype simple, intvl 1s, length 24 19:17:30.574773 IP 192.168.0.199 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 2, prio 101, authtype simple, intvl 1s, length 24
다행이도 생각했던 것 처럼 나온다. 그래서 아래처럼 5초 동안 VRIP를 감사하면 현재 네트웍의 VRIP가 다 나오고 여기서 없는 것으로 피해가면 된다!!
sudo timeout 5 tcpdump -i eth0 host 224.0.0.18 2>&1 | grep vrid | awk '{print $9}' | sort | uniq
VMWare에서 Xen설치할때 vmnet 어쩌구저쩌구..
Ubuntu에서 VMWare를 사용하고 있었습니다. 원래는 VirtualBox를 사용했었지만, 그녀석이 안의 가상머신에서는 가상화 기술(vmx or svm)을 지원해주지 않아서 말이죠..
그런데 VMware에 Xen을 설치하고 재부팅하면 네트웍 카드를 promiscuous로 허용하지 않는다고 메시지가 뜹니다. 보안때문이라나.. 간단히 아래처럼 하면 됩니다.
$ chmod a+rw /dev/vmnet*
이렇게하면 되기는 하는데, 시스템을 리부팅하면 /dev/vmnet*의 권한이 다시 재설정됩니다. ㅡㅡ 그래서 또 권한을 주고 udev에 등록을.~
$ cp -a /dev/vmnet* /lib/udev/devices
삽질 끝~
screen 상태표시줄에 세션 이름 표시하기
screen을 여러 세션을 쓰다보면 현재 어떤 세션에 있는지 헷갈린다. 지금만 봐도 세션을 열어놓은게 5개정도이고, 거기서 한 4~5개씩 윈도우를 열어넣고 있으니…
그래서 세션 이름을 상태줄에다 표시하는 방법을 찾아봤다.
screen이 실행하면 $STY 환경변수에 세션이름을 가지고 있는데, 이걸 표시하면 된다. 그런데 이걸 screenrc에 넣으면 표시가 안된다. 그래서 screen -X로 스크린에 명령을 직접 내리는 방식으로 변경했다.
if [ "$STY" != '' ]; then
_STY=`echo $STY | sed 's/^[0-9]*\.//'`
screen -X hardstatus alwayslastline "$_STY] %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
fi
훨씬 쾌적한 screen life!
커널 옵션 한방에 수정하기
요즘 Xen을 가지고 놀고 있습니다.
아직 공부하는 중이라 커널 컴파일을 자주하게 되는데 이럴때 정말로 귀찮은게 커널의 옵션들을 일일이 맞춰주는 겁니다. 정말로 귀찮습니다.
그래서 걍 스크립트질로 처리해버렸네요~~
#!/bin/sh # Xen 관련 설정들: http://wiki.xensource.com/xenwiki/XenParavirtOps 참고 configs="CONFIG_PARAVIRT=y CONFIG_XEN=y CONFIG_PARAVIRT_GUEST=y CONFIG_PARAVIRT_SPINLOCKS=y CONFIG_HVC_DRIVER=y CONFIG_HVC_XEN=y CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_PCIDEV_FRONTEND=y CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_XEN_XENBUS_FRONTEND=y CONFIG_XEN_SAVE_RESTORE=y CONFIG_XEN_GRANT_DEV_ALLOC=m CONFIG_XEN_TMEM=y CONFIG_CLEANCACHE=y CONFIG_FRONTSWAP=y CONFIG_XEN_SELFBALLOONING=y CONFIG_X86_IO_APIC=y CONFIG_ACPI=y CONFIG_ACPI_PROCFS=y CONFIG_XEN_DOM0=y CONFIG_PCI_XEN=y CONFIG_XEN_DEV_EVTCHN=y CONFIG_XENFS=y CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_SYS_HYPERVISOR=y CONFIG_XEN_GNTDEV=y CONFIG_XEN_BACKEND=y CONFIG_XEN_NETDEV_BACKEND=m CONFIG_XEN_BLKDEV_BACKEND=m CONFIG_XEN_PCIDEV_BACKEND=m CONFIG_XEN_PRIVILEGED_GUEST=y CONFIG_XEN_BALLOON=y CONFIG_XEN_SCRUB_PAGES=y CONFIG_XEN_DEV_EVTCHN=y CONFIG_XEN_GNTDEV=y " # Xen 추가 설정 configs="$configs CONFIG_XEN_BLKDEV_TAP=y CONFIG_XEN_BLKDEV_BACKEND=y " # initramfs에 필요한 설정들 configs="$configs CONFIG_MD_RAID0=y CONFIG_MD_RAID1=y CONFIG_MD_RAID10=y CONFIG_MD_RAID456=y " config_script='scripts/config' for _config in $configs ; do key=`echo $_config | awk 'BEGIN {FS="=";} {print $1}'` value=`echo $_config | awk 'BEGIN {FS="=";} {print $2}'` case "$value" in y) $config_script --enable $key ;; m) $config_script --module $key ;; *) $config_script --disable $key esac done
- Update: BLKDEV_TAP 추가 (blktap2 디바이스 사용
netsted screen
screen 안에서 screen을 사용할 경우(방화벽을 통해서 들어가는 시스템… 등등)에 ctrl + a를 누르면 최초 실행한 screen이 이 명령을 먹어버린다.
그럼 screen 안의 screen에는 어떻게 명령을 내릴까? 아주 간단하다.
Ctrl + a, a 명령으로 내리면 된다. screen이 netsted된 횟수만큼 a를 누르고 다음 명령~
ㅋㅋ
gnu screen에서 스크린 이동
음.. 말로 설명하기 좀 거시기 한데.. screen에서 계속 윈도우를 만들면 비어있는 윈도우중 가장 빠른 번호의 윈도으로 만들어 집니다.
윈도우가 0, 1, 4, 5, 7 이렇게 있다면 새로운 윈도우를 만들면 3으로 할당되는 것이죠.
그런데 가끔 이 윈도우를 맘대로 이동하고 싶을 때가 있습니다. 비슷한 작업을 하는 윈도우는 바로 옆에 놓고 싶은데요.. 그럴 경우는
^a:number: 1
이렇게 합면 됩니다. 저거 보고 좀 헷갈리긴 하죠.
- ^a: 를 입력하면 screen prompt가 나옵니다.
- number: 1 을 입력합니다.
VirtualBox에서 Unubtu를 복제할 경우의 eth0의 문제
최근 VirtualBox를 가지고 놀고 있는데, 너무 자주 설치하는 것 같아서 기본 시스템을 만들어 놓고 거기서 복제하는 방식으로 가려고 했다.
그런데 복제를 하면 eth0가 사라지고 eth1이 생기는 것 아닌가? 이러니 dhcp로 설정을 하더라도 제대로 네트웍 카드를 못찾는 문제가 발생한다.
수동으로 이 문제를 해결하려면 lshw 명령으로 네트웍 카드의를 확인하고 /etc/network/interface 파일을 수정하면 된다.
$ lshw -class network /etc/network/interface: auto eth0 iface eth0 inet static address 115.68.55.200 netmask 255.255.255.0 network 115.68.55.0 broadcast 115.68.55.255 gateway 115.68.55.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers ?
우선 수동으로 해결하고 문제가 뭔지 잠깐 구글링 해보니 역시나 문제는 우분투 시스템이었다.
Duplicated Virtual Machines Have Same IP Address
Ok, that Ubuntu issue is a known problem. It saves the assignment of MAC <==> ethX using an udev rule. Have a look at /etc/udev/rules.d and you will find a file 70-persistent-net.rules there. You can savely remove this file. This file is auto-generated by /lib/udev/rules.d/75-persistent-net-generator.rules. You can remove that file as well. From now on, the guest will no longer store the assignment between the MAC and ethX interface.
정리하자면 우분투는 MAC 주소화 ethX를 mapping하고 있고, 그 데이터는 /etc/udev/rules.d/70-persistent-net.rules에 있는 것이구나.
잠깐 더 조사해보니 그냥 /etc/udev/rules.d/70-persistent-net.rules를 지워버리는 건 의미 없다. 어짜피 그 파일은 현재 상태를 NIC와 ethX를 지정해 놓는 파일이고, 실제로 이 짓을 하는 것은 /lib/udev/write_net_rules 다.
$ chmod -x /lib/udev/write_net_rules
근데 잠깐 더 생각해보니, 이 기능이 있는건 NIC가 막 바뀌는 경우는 해당 디바이스와 네트웍 설정을 기억하게 해서 괜찮은 기능이겠다. 없다면 물리적 순서에 의해서 eth0부터 정해질 것이고, 이 순서가 바뀔 가능성이 있는 시스템이면 네트웍 잡기가 혼란스럽겠다.
결국 실행권한을 주는 것 보다는, 네트웍 환경이 바뀌면 저 파일을 지워버리자~
Lucid(10.04)에서 ubuntu-xen-server 설치하기
Lucid에서는 공식적으로 Xen을 지원하지 않는다.
아래 페이지에 나온 PPA를 설정해서 Xen을 설치해야한다. 대략적은 과정은 다음과 같다.
/etc/apt/sources.list에 PPA 추가
deb http://ppa.launchpad.net/xtaran/xen-tools/ubuntu lucid main deb-src http://ppa.launchpad.net/xtaran/xen-tools/ubuntu lucid main
sudo apt-get install python-software-properties sudo add-apt-repository ppa:xtaran/xen-tools sudo apt-get update sudo apt-get install ubuntu-xen-server