반응형

2014년부터 지금까지 Ubuntu 14.04.1 LTS (64bit)를 계속 써 왔고, 다만 아직 16.04로 업그레이드를 하지는 않았다. 16.04로 업그레이드 하라는 안내 메세지가 뜰 때마다 나중에 하겠다는 버튼만 눌렀는데, 그런데 어제 "New important security and hardware support update." 라는 대화창이 뜨면서 업데이트를 하라는 메세지가 화면에 나타났다.


이전에 주기적으로 보던 Software Updater의 앱 업데이트 알림 창도 아니고, 새 버전(16.04)으로 바꾸라는 메세지도 아닌 처음 보는 안내창인데 메세지도 뭔가 심각해 보인다. (-_-) 중요한 보안 업데이트겠거니 생각하고 무심코 업데이트 버튼을 눌렀는데...


그런데 거의 한 시간이나 업데이트를 진행하는 것이었다.

뭘 저렇게 많이 설치하는 걸까?


나중에 다 끝나고 나서 보니...

뭘 많이 설치해서 그랬던 것이 아니고, 뭘 많이 지우느라 그랬던 것이었다! ㅜㅜ


재부팅을 했더니 이상하게 몇몇 앱 아이콘이 사라져 있고(Dropbox, VLC, Terminator 등),  듀얼 모니터 화면도 초기화되어서 화면 순서가 뒤바뀌었다. 그런데 디스플레이 설정을 바꾸려고 보니까 System Settings도 찾을 수 없댄다. (헐?)  게다가 Software Updater도 없어져 있었다. 이건 무슨 시츄에이션?


아니 이게 무슨 재앙인가? ㅜㅜ 인터넷에서 검색해 보니, 위의 업데이트 메세지는 커널을 최신 버전으로 업데이트하는 것과 관련된 것이라고 한다. 실제로 확인해 보니 원래 3.16.X 대의 버전으로 되어 있던 커널이 4.4.0.36-generic을 바뀌어 있었다.

물론 커널을 새 버전으로 바꿔서 잠재적인 보안 문제를 해결하는 것 자체는 좋으나, 이로 인해 기존에 쓰고 있던 앱들이 영문도 모르게 사라지고, 심지어 우분투인데 자기 데스크탑 환경까지 날려먹는 상황을 뭘로 설명해야 할까?


일단 재부팅 후에 unity-control-center, ibus, ubuntu-desktop, 그외 내가 쓰던 앱들(Dropbox, terminator, vlc 등)을 재설치했다. 아마 이외에도 상당히 많은 앱들이 영문도 모르게 삭제되었을 가능성이 높은데, 무엇이 삭제되었는지 아직 다 파악이 되지 않는다. 앞으로 쓰다 보면 뭔가 없어서 또 재설치를 하면 되겠지만, 정말 어이가 없다.

처음 팝업 메세지를 봤을 때 바로 업데이트 버튼을 누르지 말고 검색을 해 봤어야 했다. 나와 입장이 같으면서 업데이트를 진행하지는 않은 채 우분투 측에 불만을 토로하는 글이 있었다. [1] 이걸 먼저 봤어야 하는데...


이건 어떻게 보면 사실상 반 강제적으로 16.04를 쓰라고 유도하는 것이나 마찬가지이다. 그뿐만 아니라, 업그레이드를 하면서 기존의 시스템 설정을 최대한 유지해야 하는데 업그레이드가 아닌 커널 업데이트만으로 운영체제 환경이 통째로 망가지는 상황이니 오히려 16.04로 업그레이드를 할 마음이 싹 사라진다. 업그레이드하고 나서 시스템 어딘가가 망가지고 원래 쓰던 중요한 앱들이 작동하지 못해서 발생하는 손실에 대해 책임지기라도 할까?


PC의 주 운영체제로 윈도우7, 윈도우10을 쓰다가 우분투로 바꾸고 윈도우는 서버에서 VM으로 만들어서 쓰고 있는데, 여전히 우분투는 윈도우에 비해 불안정한 요소가 너무 많은 것 같다. 특히 시스템 업데이트를 할 때 너무 문제가 많다. 윈도우는 7에서 10으로 업그레이드하고 나서 망가진 프로그램이 단 하나도 없었는데, 우분투는 예전에 10.04를 12.04로 바꿀 때도 대다수의 패키지가 망가졌고, 이번에도 단지 커널만 (그것도 우분투가 강요해서) 바꿨는데 데스크탑 환경이 엉망이 되었다.


오픈소스에 무료로 쓰는 입장에서 우분투가 나날이 발전해 가는 모습은 좋지만, 기왕 개선하고 새 버전으로 업데이트를 해주고 싶으면 최대한 기존 시스템 설정이 망가지지 않도록 더 많이 신경을 써 줬으면 좋겠다.


이번 사건 때문에 어딘가 망가져 있을 현재 시스템을 계속 쓰는 것도 찝찝해서, 조만간 14.04 자체를 클린 설치하거나, 좋든 싫든 16.04로 클린 설치를 해야 할 것 같다. 

(우분투 나빠요!! ㅠㅠ 사실 이렇게 말하고도 윈도우로 돌아가지는 않고 우분투나 다른 리눅스 계열을 쓸 궁리를 하고 있으니, 이쯤 되면 그냥 애증의 관계인 듯 하다.)




<참고자료>

[1] Ubuntu Forums, "I thought 14.04 was supported for 5 years so why am I getting HWE stack message?" https://ubuntuforums.org/showthread.php?t=2334371



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04.1 LTS, Raspbian Jessie

tcpdump: Version 4.6.2 (libpcap 1.6.2)



리눅스에서 네트워크(e.g. 메쉬 네트워크)에 참여하는 각각의 기기가 자신을 거쳐 가는 모든 트래픽 사용량을 네트워크 인터페이스별로 구분해서 통계를 낼 필요가 생겼다.


Tcpdump에서는 "-i any" 옵션을 써서 한꺼번에 모든 인터페이스를 모니터링할 수는 있다. 하지만 아쉽게도 화면에 표시되는 로그 한 줄이 어느 네트워크 인터페이스에 연관된 것인지 알 수 없다. 특히 멀티라디오 멀티채널 라우팅 프로토콜을 돌리는 메쉬 라우터의 입장에서는 지나가는 트래픽 플로우 하나가 어느 네트워크 인터페이스를 거쳐서 지나가고, 소비하는 대역폭의 양이 어느 정도인지 반드시 확인해야 한다.


결국 두 가지 방법 중 하나를 써야 한다.

  1. Tcpdump 인스턴스 하나를 모든 네트워크 인터페이스에 대해서 검사하도록 실행하고, tcpdump에 찍히는 source, destination IP 주소를 검사해서 어느 네트워크 인터페이스에 해당되는지 확인(예측)하는 방법
  2. 각 네트워크 인터페이스별로 tcpdump 인스턴스를 별도로 실행하고, 각 인터페이스별로 구분되는 로그를 활용하기


처음에는 내가 1번 방식을 써서 라우팅 프로토콜에서 tcpdump 로그를 파싱하고 source, destination IP주소를 가지고 네트워크 인터페이스 이름을 알아내는 함수를 코딩해서 썼는데, 예상치 못한 문제가 발생했다. 로그에 찍히는 source와 destination IP 주소가 현재 로깅을 하는 기기와 상관없는 원격지의 IP주소일 경우에는 어느 인터페이스를 통해서 패킷이 들어오고 나가는지 알 수가 없었다. 아주 불가능한 것은 아니지만, 라우팅 테이블에 접근해서 source, destination 양쪽으로 가는 경로와 네트워크 인터페이스를 확인해야 했다. 그리고 외부에서 현재 기기로 들어오는 패킷인지, 패킷이 현재 기기를 통해서 다른 노드(next hop)로 빠져나가는 것인지를 tcpdump 로그에서는 알 길이 없었다. 라우터 입장에서는 똑같은 로그가 두 줄이 찍히는 것처럼 표시가 되었다.


결국 2번 방법을 쓰기로 하고 인터넷을 찾아보니 나와 비슷한 목적으로 tcpdump를 응용하는 사례가 이미 있었다. [1]

핵심은, 동시에 여러 개의 tcpdump 인스턴스를 실행하고, 그 대신 각 인스턴스에서 로그가 한 줄 찍힐 때마다 앞에 네트워크 인터페이스 이름을 추가해서 한 화면에 모두 출력하는 것이고, 이것을 bash script로 만든 것이 첫 번째 답변이다. ([2]에도 있음)


다만 [1]과 [2]에 소개된 스크립트가 라즈베리파이에서는 에러가 나서, 그냥 옵션들 빼고 여러 인터페이스를 동시에 쓰도록 간단하게 만들었다.


[anydump2.sh]

#!/bin/sh


# Get a list of interface names from a user by an argument. (e.g. 'eth0 wlan0')

# Note that the list of interfaces separated by a space should be inside '' or "".

IFLIST=$1


# When this exits, exit all background processes:

trap 'kill $(jobs -p) &> /dev/null && sleep 0.2 &&  echo ' EXIT


# Create one tcpdump output per interface and add the interface name in front of each line:

for interface in $IFLIST

do

        tcpdump -l -i $interface -Nn -b ip -tttt | sed 's/^/'"$interface"' /' 2>/dev/null &

done


# Wait until Ctrl+C

wait



사용 예시:


무선 인터페이스 3개(wlan0, wlan1, wlan2)를 모니터링할 경우,

$ sudo ./anydump2.sh 'wlan0 wlan1 wlan2'



출력 예시:

(listening 이후부터 출력되는 로그의 맨 앞에 인터페이스 이름이 다르게 찍히는 것을 볼 수 있다)


cdsn@cdsn-HP-EliteBook-2740p:~/exp/tcpdm-monitor$ sudo ./anydump2.sh 'wlan0 wlan1 wlan2'

[sudo] password for cdsn: 

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on wlan2, link-type EN10MB (Ethernet), capture size 65535 bytes

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on wlan1, link-type EN10MB (Ethernet), capture size 65535 bytes

wlan0 2016-09-05 17:42:41.671768 IP 192.168.4.6 > 192.168.4.5: ICMP echo request, id 2210, seq 1, length 64

wlan0 2016-09-05 17:42:41.671861 IP 192.168.4.5 > 192.168.4.6: ICMP echo reply, id 2210, seq 1, length 64

wlan0 2016-09-05 17:42:42.650726 IP 192.168.4.6 > 192.168.4.5: ICMP echo request, id 2210, seq 2, length 64

wlan0 2016-09-05 17:42:42.650783 IP 192.168.4.5 > 192.168.4.6: ICMP echo reply, id 2210, seq 2, length 64

wlan0 2016-09-05 17:42:43.650913 IP 192.168.4.6 > 192.168.4.5: ICMP echo request, id 2210, seq 3, length 64

wlan0 2016-09-05 17:42:43.650952 IP 192.168.4.5 > 192.168.4.6: ICMP echo reply, id 2210, seq 3, length 64

wlan1 2016-09-05 17:42:47.740037 IP 192.168.3.6 > 192.168.3.5: ICMP echo request, id 2211, seq 2, length 64

wlan1 2016-09-05 17:42:47.740121 IP 192.168.3.5 > 192.168.3.6: ICMP echo reply, id 2211, seq 2, length 64

wlan1 2016-09-05 17:42:48.752034 IP 192.168.3.6 > 192.168.3.5: ICMP echo request, id 2211, seq 3, length 64

wlan1 2016-09-05 17:42:48.752080 IP 192.168.3.5 > 192.168.3.6: ICMP echo reply, id 2211, seq 3, length 64

wlan1 2016-09-05 17:42:49.747415 IP 192.168.3.6 > 192.168.3.5: ICMP echo request, id 2211, seq 4, length 64

wlan1 2016-09-05 17:42:49.747452 IP 192.168.3.5 > 192.168.3.6: ICMP echo reply, id 2211, seq 4, length 64

^C6 packets captured6 packets captured


6 packets received by filter6 packets received by filter


0 packets dropped by kernel0 packets dropped by kernel


0 packets captured

0 packets received by filter

0 packets dropped by kernel

wlan1 

wlan0 

wlan2 

cdsn@cdsn-HP-EliteBook-2740p:~/exp/tcpdm-monitor$ 





<참고자료>

[1] StackOverflow, "How to display interface in tcpdump output flow?," http://serverfault.com/questions/224698/how-to-display-interface-in-tcpdump-output-flow

[2] Sebastian Haas, "Anydump 1.3," http://sebastianhaas.de/anydump-release/



반응형
블로그 이미지

Bryan_

,
반응형

<Note>

  • 대학원생이 근로장려금을 받으려면, 반드시 "근로소득"이 조금이라도 있어야 한다. 단 1원이라도 근로소득이 있어야 한다.
  • 만약 대학원생이고 100% 기타소득밖에 없다면 근로장려금을 받을 수 없다. (2016년 11월 10일, 국민신문고에 대한 국세청의 답변 기준)



정부에서 지급하는 근로장려금의 경우 2015년도 총소득 합계액이 아래 기준을 넘지 말아야 한다.

  • 외벌이 단독가구(1인): 1300만원
  • 외벌이 가족가구(배우자 또는 부양자녀 있는 외벌이): 2100만원
  • 맞벌이 가족가구: 2500만원


그리고 소득은 아래 종류를 모두 합산해야 한다:

  • 근로소득(총급여)
  • 사업소득(총수입금액 X 업종별 조정율(20~90%)
  • 기타소득(총수입금액-필요경비)
  • 이자ㆍ배당ㆍ연금소득(총수입금액)


국내 대학원생의 경우 학교에서 학자금(=장학금)을 받거나, 랩실에서 연구과제를 수행하면서 연구비(=학생인건비)를 받게 되는데, 이것은 2015년 기준으로 모두 "기타소득"에 해당한다. 다만 석사과정/박사과정 학생 신분이 아니라 위촉연구원으로 연구실에서 일을 하게 되면 근로소득이 된다.


근로소득의 경우에는 2015년도에 받은 근로소득 100%가 위의 근로장려금 지급 기준에 부합해야 한다. 다만 기타소득의 경우에는 2015년도의 총수입 금액에서 "필요경비"를 제외한 액수를 기준으로 하면 된다. 기타소득의 필요경비 기준은 기타소득의 종류마다 다르지만, 대학원생의 연구비의 경우에는 기타소득의 필요경비가 80%로 되어 있다.


따라서, 연구과제에 참여해서 월 150만원의 연구비를 받는 대학원생의 경우,

  1. 총수입금액 = 150만원 * 12개월 = 1800만원
  2. 필요경비 = 1800만원 * 0.8 = 1440만원
  3. 근로장려금 기준용 기타소득 = 360만원


학교마다 다른지 모르겠지만, 카이스트에서 정부과제 참여율을 최대(100%)로 할 경우의 연구비 상한선이 석사과정은 월 180만원, 박사과정은 월 250만원이고, 이것을 연간 총수입금액으로 환산하고 필요경비를 빼면 최대 600만원이다. 따라서 대학원에서 연구과제를 통한 연구비 외에 다른 수입이 없을 경우 무조건 근로장려금 지급 기준에 충족한다. 


다만 연구과제를 통한 수입 외에 다른 외부 수입이 있을 경우에는 별도로 소득 총액에 합산을 해야 하니 유의해야 한다. 오히려 수입 기준보다는 본인이 독립된 세대주인지 확인하는 것이 더 중요하다. 예를 들어, 기숙사에 거주하고 있지만 주민등록등본 상에는 본인이 여전히 부모님이 계신 집에 거주하는 세대원으로 되어 있으면 같은 세대로 묶여 있는 부모님의 소득이 모두 합산되기 때문에 근로장려금 신청을 할 수 없는 경우가 생긴다.


홈택스에 근로장려금을 신청해 보면 일단 위와 같은 소득 기준을 충족하는지부터 검사를 하기 때문에 자신의 소득 총액이 어떤 종류가 어떤 비중으로 합산되는지 살펴봐야 한다. 그리고 그 다음 단계에서는 예금자산, 부동산자산 등을 얼마나 가지고 있는지에 따라서 받을 수 있는 근로장려금 총액이 달라지게 된다.



<참고자료>

[1] 근로장려금ㆍ자녀장려금 계산해보기, https://www.hometax.go.kr/websquare/websquare.wq?w2xPath=/ui/pp/index_pp.xml&tmIdx=19&tm2lIdx=1906000000&tm3lIdx=1906000000

[2] 기타소득의 범위 및 필요경비, https://www.nts.go.kr/call/income_tax/2013/htm/01_23.html


반응형
블로그 이미지

Bryan_

,