반응형

Test OS: Ubuntu 16.04 Server (amd64)


서버가 고정IP(IPv4)를 사용하는 경우를 기준으로 작성했다.



1. brctl 도구를 이용해서 br0 인터페이스 추가

  브릿지 인터페이스 이름은 꼭 br0이 아니어도 상관은 없다.


$ sudo brctl addbr br0



2. 인터페이스 설정


/etc/network/interfaces 파일

auto 이더넷_인터페이스_이름

iface 이더넷_인터페이스_이름 inet manual


auto br0 

iface br0 inet static

    address 고정IP주소

    netmask 넷마스크

    gateway 고정IP에_해당하는_게이트웨이

    dns-nameservers 도메인_네임_서버_IP주소

    bridge_ports 위에_manual로_설정된_물리적_이더넷_인터페이스

    bridge_fd 0

    bridge_maxwait 0

    bridge_stp off


# lo 인터페이스라던가, 그외 별도로 다른 인터페이스에 대해 설정해둔 것은 그대로 둘 것


(예) 서버에서 쓰는 물리적 이더넷 인터페이스 이름이 eno1이고 고정IP를 10.0.4.11/24로 쓸 경우,


auto eno1

iface eno1 inet manual


auto br0 

iface br0 inet static

    address 10.0.4.11

    netmask 255.255.255.0

    gateway 10.0.4.1

    dns-nameservers 8.8.8.8

    bridge_ports eno1

    bridge_fd 0

    bridge_maxwait 0

    bridge_stp off 



3. 서비스 재시작 또는 재부팅해서 설정 적용


$ sudo /etc/init.d/networking restart  또는 sudo service networking restart

$ sudo /etc/init.d/libvirt-bin restart


아니면 그냥 깔끔하게 재부팅.



서버 쉘에서 ifconfig 쳤을 때, br0 인터페이스가 보이면서 고정IP주소가 제대로 설정되어 있고, HWaddr에 적힌 맥주소가 실제 물리적 이더넷 인터페이스와 똑같으면, 그리고 물리적 이더넷 인터페이스에는 아무 IP주소도 할당되어 있지 않으면 성공적으로 설정한 것이다.


혹시 재부팅 후에 SSH로 서버에 접근이 안되는 경우 (== 서버가 네트워크 연결을 못하는 경우), /etc/network/interfaces 파일에서 bridge_ports에 적힌 이름실제 물리적 이더넷 인터페이스 이름이 서로 맞지 않는지, 즉 오타가 없는지 먼저 점검할 것 (여기서 두 번 실수함. ㅠㅠ)

만약 물리적 인터페이스 이름을 정확히 매치하지 않으면, KVM (정확히 말하면 virt-manager GUI에서의 개별 VM 설정에서 네트워크 인터페이스 설정 창)에서는 br0이라는 이름 옆에 empty bridge라고 표시된다.





반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04 Desktop (amd64)

Device: NETIS WF2190 (Realtek RTL8812au) (802.11ac)


실험에 5GHz 대역으로 작동하는 IEEE 802.11ac를 쓰기 위해서 NETIS NF2190 무선랜카드를 꺼냈다.

대충 이렇게 생겼다.


 



우분투 머신에 USB로 연결했더니 바로 인식되지는 않았다.

lsusb에서는 인식되고 있기 때문에 드라이버만 설치하면 된다.


$ lsusb


...(생략)...

Bus 001 Device 005: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter

...(생략)


내 PC가 그동안 Atheros 계열 무선랜카드를 컴파일하는 데만 집중하느라 Realtek 계열 드라이버가 모두 날아갔을 수도 있고, 원래 인식이 안되는 것일 수도 있다. 아무튼 드라이버를 설치하기 위해서 동봉된 CD에서 linux 디렉토리에 있는 설치 파일이 들어 있는 디렉토리를 복사해 와서 설치를 시도했다.

최상위 위치에 있는 install.sh 실행했더니 중간에 빌드 에러 발생.


인터넷을 뒤져 보다가, 그냥 git에 있는 최신 코드를 가져와서 빌드하기로 했다. [1]


$ git clone https://github.com/gnab/rtl8812au.git

$ cd rtl8812au
$ make
$ sudo make install
$ sudo modprobe 8812au


make는 문제없이 됐다.

sudo make install 명령도 문제없이 되는 듯 했다.

하지만 sudo modprobe 8812au가 되지 않았다.

/lib/modules/($uname -r)/kernel/drivers/net/wireless/ 위치에 8812au.ko가 있는데도 실행이 안됐다.


make 과정 중간에 mcount가 없다는 경고 메세지가 있었고 에러가 아니길래 그냥 넘겼는데, 이게 실제 드라이버의 정상 실행을 막는 원인이었다.

확인해 보니 gcc 버전을 4.8로 바꾸면 해결된다고 한다. [2] 그러고 보니 퀄넷 시뮬레이션 때문에 gcc 버전을 낮춰뒀던 것이 생각났다. 

gcc 버전 변경: http://skylit.tistory.com/23



gcc 버전을 바꾸고 다시 make; sudo make install; sudo modprobe 8812au 를 했더니 랜카드가 드디어 인식이 되었다.

iwconfig 명령으로 새로 보이는 무선랜 인터페이스가 있는지 확인할 수 있다.


$ iwconfig


... (생략)

wlan7     unassociated  Nickname:"<WIFI@REALTEK>"

          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   

          Sensitivity:0/0  

          Retry:off   RTS thr:off   Fragment thr:off

          Power Management:off

          Link Quality:0  Signal level:0  Noise level:0

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

...(생략)




<참고자료>

[1] http://ubuntuforums.org/showthread.php?t=2258715

[2] http://askubuntu.com/questions/468758/modprobe-ndiswrapper-error


반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04 (desktop, server 모두) amd64



우분투(또는 리눅스) 머신에 원격접속할 때 xrdp를 설치하면 RDP 클라이언트(e.g. 윈도우의 원격 데스크탑 연결)를 쓸 수 있어서 좋지만, 세부 설정을 수정하지 않고 그대로 둘 경우 다음과 같은 두 가지 문제가 발생한다.


  1. (우분투만 해당) 검은색 또는 회색 화면만 나온 채 가만히 있거나, 그 상태로 잠시 있다가 연결이 끊어짐.
  2. 매번 세션이 새로 생성돼서 이전의 작업 환경에 접근할 수 없음.


1번의 경우에는 우분투 기본 세션인 Unity에 버그가 있고 아직 해결되지 않아서 그렇다.

답답하지만 xfce4와 같은 다른 세션을 설치해서 써야 한다. [1]



이 글에서 해결할 문제는 2번이다. 사실 이것은 xrdp 기본 설정이 불친절(?)해서 기존 세션을 재활용하기 위한 옵션을 디폴트에서 볼 수 없기 때문이다.


즉, 원격 세션에서 로그아웃을 하지 않으면 매번 rdp로 로그인할 때마다 새로운 세션이 쌓여서 쓸데없이 메모리를 차지하게 된다. 그 뿐만 아니라 각 세션마다 실행시켜 둔 어플리케이션들도 다 그대로 살아있게 되므로 낭비도 이런 낭비가 없다.


물론 xrdp 설정에서 최대 동시 세션 수를 기본값 10으로 제한해 두기는 했다. 따라서 윈도우 rdp 클라이언트로 리눅스 머신에 10번 넘게 접속해서 세션을 만들기만 하면, 기존의 10개 중 가장 오래 된 세션이 고아 프로세스가 되거나, 아예 에러가 나면서 더이상 연결이 안되는 문제가 발생한다. 이런 문제를 방지한답시고 최대 세션 수를 100개(...)로 늘리라는 조언을 인터넷에서 심심찮게 볼 수 있는데, 그다지 좋은 방법이 아닌 것 같다.


물론 기존 세션을 쓰기 위한 옵션이라고 해봤자 결국 "포트 번호"를 입력하는 것 외에는 아무 것도 없다. ㅡㅡ; 즉, 기존 세션이 각자 포트 번호 하나씩 할당되어 있으니까 포트 번호만 외우고 있으면 나중에 다시 접근할 수 있다. 지금 생성돼 있는 세션과 포트 번호를 리스트로 보여주기라도 하면 좋을 텐데... 뭐 오픈소스니까 직접 그 기능을 코드로 만들어 넣지 않는 이상 너무 많은 것을 기대하지는 말자... ㅜㅜ





<XRDP 기존 세션 재활용 방법>


1. /etc/xrdp/xrdp.ini 파일을 열고, [xrdp1]에 해당되는 항목을 아래와 같이 고친다.


...

[xrdp1]

name=sesman-Xvnc

lib=libvnc.so

username=ask

password=ask

ip=127.0.0.1

port=ask5910

...


원래는 port 부분이 -1로 되어 있고, 로그인 창에서 보이지 않게 되어 있다. 하지만 ask를 추가함으로써 항상 접속할 때마다 포트 번호를 입력할 수 있도록 바꿨고, 그 뒤에는 5910이라는 포트 번호가 기본적으로 입력되어 있도록 설정했다.



2. xrdp 서비스를 재시작한다.


$ sudo service xrdp restart



3. 원격 데스크탑 연결(RDP) 클라이언트로 접속하면, 아래 그림과 같은 로그인 화면이 뜰 것이다.

원래 없던 포트 번호가 표시됨을 알 수 있다.



만약 리눅스 머신을 부팅한 직후 맨 처음 접속하는 경우거나, 기존에 생성된 세션의 포트 번호를 모르겠는 경우에는 아래와 같이 포트 번호를 "-1"로 고쳐서 로그인한다.


(새로운 세션을 만들 때에는 포트에 -1을 입력한다)


새로운 세션이 만들어질 때, 로그 메세지를 자세히 보면 세션이 어느 포트 번호에 할당되는지 알 수 있다. 해당 포트 번호를 기억해 둔다.

(새로운 세션이 포트 번호 5910번에 할당되었음을 알 수 있다.)


원하는 작업을 수행하고, 로그아웃하지 않은 채로 RDP 클라이언트를 종료한다.



4. RDP 클라이언트로 다시 리눅스 서버에 접속한다.

이번에는 로그인할 때 port 부분에 이전에 접속했을 때 할당된 포트 번호를 쓰고 로그인한다. 그러면 방금 전에 작업하던 세션을 그대로 볼 수 있다.





필자의 경우는 리눅스에 RDP로 접속할 때에도 윈도우 서버에 원격접속 하듯이 세션을 여러 개 만들지 않기 때문에, 부팅 직후 맨 처음에 세션을 만들 때 -1로 바꾸는 수고만 하고, 그 뒤에는 항상 맨 처음 시도하는 포트번호가 5910이기 때문에 기본값으로 5910번 포트가 입력되어 있도록 설정해 두었다.


현재로써는 앞으로 쓰기에 이게 가장 손이 덜 가는 설정이라고 생각한다. 하지만 xrdp가 조금 더 친절해져서 리스트 형태로 나열된 기존 세션 중 하나를 눈으로 보고 선택해서 로그인할 수 있도록 개선되면 정말 좋겠다.




<참고자료>

[1] http://yujuwon.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-%EC%9B%90%EA%B2%A9-%EC%A0%91%EC%86%8D


반응형
블로그 이미지

Bryan_

,
반응형

Host OS: Ubuntu 14.04.1 LTS (amd64)

Guest OS: Windows 10 (64-bit)


연구실 PC가 메모리가 넉넉한 편이라서(16GB) 가상 머신으로 윈도우를 시험삼아 돌려 보고 있는데, 이상하게 오랜만에 가상머신에 원격으로 접속하면 (원격 데스크탑 RDP 사용) 바탕화면이 뜨는데 상당히 오랜 시간이 걸린다. 정확히 재지 않았지만, 1분은 확실히 넘는 것 같다.


가상머신 구성은 다음과 같다:

  • 가상 머신 관리는 QEMU KVM을 사용
  • 윈도우 가상 머신에 CPU 2 Cores (물리적으로 2개, 쓰레드 기준으로 4개), 6GB 메모리, 180GB의 하드디스크를 할당
  • 평소에 항상 PC를 켜 두고, 리눅스를 주로 사용하다가 몇 시간에 한 번씩 윈도우 가상 머신에 RDP로 연결(리미너 원격 클라이언트 또는 FreeRDP 사용)

보통 맨 처음 가상 머신을 부팅시키고 나면 직접 Virtual Machine Manager 어플리케이션에서 확인하든 RDP로 원격접속하든 상관 없이 바로 바탕화면이 나오는데, 윈도우에서의 작업을 마치고 원격 접속 연결만 해제한 채 (즉, 켜진 상태로) 오랜 시간을 쓰지 않으면, 나중에 다시 접속할 때 위와 같이 상당히 오랜 시간이 걸린다. 그리고 그 때 PC의 물리적인 상태를 보면 HDD 램프가 빠르게 깜빡거리면서 하드디스크에 지속적으로 열심히 접근하고 있다.


확인해본 결과, 우분투는 기본적으로 물리적인 메모리에 상주하는 어플리케이션을 가급적이면 스왑 영역(가상 메모리 영역; 즉 하드디스크)에 옮겨 두려는 경향이 크다는 것을 알게 되었다. 그리고 그 경향을 조절하는 설정 변수가 Swappiness이다. 0부터 100 사이의 값 중에서 기본값이 60으로 되어 있다. 60이라는 숫자가 정량적으로 얼마만큼의 메모리 영역을 스왑 영역으로 보내는지는 확실하지 않지만, 경향성이 매우 높은 편에 속한다는 사실에는 이견이 없어 보인다.


인터넷에서 대부분의 우분투 사용자들이 개인 PC에서 우분투를 쓸 때 성능을 개선하기 위해서 가장 먼저 swappiness부터 조정한다는 것 또한 알 수 있었다. 설정 방법은 /etc/sysctl.conf 파일에 아래와 같이 한 줄을 추가하거나, 이미 있으면 숫자를 아래와 같이 조정한다:

vm.swappiness=10


인터넷에서는 보통 swappiness 값을 10 으로 권장하는 분위기이다. 실제로 나도 swappiness 값을 조정하고 나서 윈도우 가상 머신의 원격 데스크탑 접속 로딩 시간이 꽤 단축되는 것을 체감할 수 있었다. 하지만 여전히 몇 시간 후에 다시 접속하면 약 30초 가량의 딜레이가 발생하였다. 그래서 아예 vm.swappiness 값을 3으로 더욱 낮게 설정했더니, 그제서야 길어도 10초 이내로 바로 원격 데스크탑 화면이 나타났다.


개인적인 경험으로 볼 때, 물리적 메모리가 16GB이고 가상 머신을 한 개만 운용하고 있으며, 이외에 메모리를 많이 소비하는 다른 프로그램을 쓰지 않기 때문에 swappiness 값을 매우 낮게 줘도 앞으로 쓰는 데는 문제가 없을 것 같다.


하지만 근본적으로는 서버에서 가상 머신을 돌리는 것이 속도를 개선하는 가장 확실한 방법인 것 같다. 실제로 연구실에서 운용하는 24코어에 64GB 메모리, 5TB의 하드디스크를 갖고 있는 서버에서 동일한 스펙의 가상 머신을 돌리는 것이 개인 PC에서 돌릴 때에 비해 속도가 월등하게 빨랐다. 즉, 그래픽 측면의 이질감과 불편함(폰트 같은 것이 깔끔하게 표시되지 못하고, 게임을 실행하지 못하는 문제)만 감수할 수 있다면, 서버에서 가상 머신을 돌리는 것(결국 클라우드 환경)이 좋을 수밖에 없다.


아직 연구실에 오픈스택(OpenStack)을 적용하지는 못했는데 (당장 이 쪽으로 연구실 구성원 중에 연구주제가 있는 것은 아니고, 운영상의 목적만 있음), 서버 여러 대와 몇몇 잉여 데스크탑 본제들을 조합해서 클라우드 환경을 만들어서 돌려보고 싶다. 일단은 졸업이 급하니 졸업하고 나서 해 봐야겠다. ㅜㅜ


반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04 LTS


우분투 부팅 시 "waiting for network configuration"이라는 글자가 떠서 한동안 기다리는 경우가 있다.

ESC로 취소가 안되고, 1분 이상 걸리는 듯 하다.


이런 경우는 대체로 /etc/network/interfaces 파일에 있는 설정이 실제 하드웨어와 맞지 않거나, 설정이 잘못 입력되어 있어서 발생한다. 필자의 경우에는 우분투 데스크탑에 있는 네트워크 관리자(network-manager)를 쓰지 않고 직접 /etc/network/interfaces 파일을 설정하다 보니 생기는 문제였다.


실제 하드웨어와 맞지 않는다는 것의 의미는, USB 무선랜카드에 대한 설정을 interfaces 파일에 기록해 두었는데, 재부팅하는 순간에 그 USB 무선랜카드를 빼 놓아서 interfaces 파일에 입력된 인터페이스 이름(예: wlan0)을 찾을 수 없는 경우이다.

이 경우, USB 무선랜카드를 연결시킨 다음에 부팅하거나, 부팅하는 당시에 /etc/network/interfaces 파일에서 무선랜 관련 설정이 미리 주석처리 되어 있어야 한다.


그 외에는 링크(http://askubuntu.com/questions/213614/waiting-for-network-configuration-problem)에 의하면, 같은 물리적 인터페이스에 여러 IP를 할당하는 경우(eth:0 과 같이 설정)에 게이트웨이를 두 번 명시하는 경우에도 발생한다고 한다.



반응형
블로그 이미지

Bryan_

,