블로그 이미지
안녕하세요~ iolate(a.k.a. isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (169)
Server, Cloud (7)
끄적끄적 (6)
Linux, Ubuntu (25)
개발개발 (45)
Mac, iOS (41)
Embedded (19)
NAS (1)
Web (5)
Network (3)
Review (10)
기타 (7)
비공개글 (0)
Total634,101
Today18
Yesterday195

tar 압축/해제

Linux, Ubuntu / 2018.09.10 03:40

맨날 검색하다가 작성.


압축

$ tar -zcf [.tar.gz] [...]


압축 해제

$ tar -zxf [.tar.gz]


옵션

-f: use archive file or device ARCHIVE

-c: create a new archive

-x: extract files from an archive

-z: filter the archive through gzip


-p: extract information about file permissions (default for superuser)

-t: list the contents of an archive

-v: verbosely list files processed

Posted by iolate
TAG tar, tar.gz

서버에서 

push "redirect-gateway def1 bypass-dhcp"

push "dhcp-option DNS 10.0.2.220"

이런류의 설정을 넣어두면, OpenVPN 으로 연결시 모든 트래픽이 VPN 을 통하게 된다.


이를 client 설정 파일에서 override 할 수 있는데, 여러 방법이 있지만 설정파일을 이용하는 방법을 기술.

다른 방법은 아래 참고 URL 로 들어가보자.


위 서버 설정에서의 첫번째 줄, push ~~ def1 ~~ 어쩌구 설정을 썼다면 client 설정 파일에 아래 라인들을 포함하면 된다.

route 0.0.0.0 192.0.0.0 net_gateway
route 64.0.0.0 192.0.0.0 net_gateway
route 128.0.0.0 192.0.0.0 net_gateway
route 192.0.0.0 192.0.0.0 net_gateway


만약 서버에서 def1 옵션을 사용하지 않았을 경우 아래 와 같은 방법으로.(뭐가 다른진 잘 모르겠다)

route 0.0.0.0 128.0.0.0 net_gateway
route 128.0.0.0 128.0.0.0 net_gateway



+

위 방법까지만 하면 VPN 대역만 라우팅될텐데, 나같이 내부망에 VPN 서버 파두고 쓰는 경우엔 추가로 라우팅 테이블을 수정해야 한다.

내가 사용하려는 내부망은 10.0.0.0/8 대역을 사용하고, DNS 설정도 필요하니 아래와 같이 설정을 추가

route 10.0.0.0 255.0.0.0
dhcp-option DNS 10.0.2.220


DNS 설정의 경우 VPN 클라이언트 옵션에서 "수동으로 설정한 네트워크 설정 변경"을 허용해주어야 한다.

이건 클라이언트마다 다르니 알아서 찾아서 켜주도록 하자.



참고

https://community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway

https://serverfault.com/a/631048

Posted by iolate

ubuntu 17 부터인지

ifupdown 대신 netplan 이 네트워크 설정을 담당하고,

기본 nameserver 로는 127.0.0.53, systemd-resolved 가 작동하면서 알아서 질의한다.


같은 시기에 설치한 ubuntu 18 서버 두대 중 한대가 dns 질의가 안되었는데,


$ nslookup google.com

Server: 127.0.0.53

Address: 127.0.0.53#53


** server can't find google.com: SERVFAIL


$ sudo journalctl -u systemd-resolved -f

Jun 26 18:53:46 hostname systemd-resolved[688]: Got packet on unexpected IP range, refusing.



대충 이런 상황...?


원인을 찾아보니 황당하게도 iptables 설정 문제.

포트 포워딩을 하면서 SNAT 을 위해 아래와 같이 설정해두었는데 이게 문제였다.

# iptables -t nat -A POSTROUTING -j MASQUERADE



로컬 인터페이스에 대해서도 SNAT 이 걸려서 뭔가 문제라고 판단을 하였고, 

# iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

이렇게 네트워크 인터페이스를 지정해주고 문제 해결.


참고로 네트워크 인터페이스 지정을 안해주니 sudo 도 hostname 을 제대로 못찾아서 에러를 낸다.

127.0.1.1 주소를 /etc/hosts 파일에 hostname 과 연결해주면 해결되지만, (또 그렇게 연결해두라고 하지만)

SNAT 설정을 안해두면 애초에 이 문제가 발생하지 않음.


여튼 해결.

Posted by iolate

Ubuntu 12.04 에서 openswan 을 사용하여 l2tp 서버를 설치한 글은 - 우분투 L2TP VPN 설치/설정법



요즘에 IKEv2 라는거 사용을 권장하는 것 같긴 하지만, 일단 귀찮으니 그냥 L2TP 를 사용해보도록 하자.


1. IPSEC

Ubuntu 16.04 부터는 openswan 이 기본 repository 에 제공되지 않는다. 대체품으로 strongswan 을 설치하자.

strongswan 을 사용하면서 설정이 조금 다른데, 이걸 제외하면 이전 글과 동일하다.


# apt-get install strongswan

# vi /etc/ipsec.conf

더보기


# vi /etc/ipsec.secrets

더보기


# service ipsec restart


2. xl2tpd

이전 글과 똑같다. 귀찮으니 딱 필요한 부분만 적겠음.


# apt-get install xl2tpd ppp

# vi /etc/xl2tpd/xl2tpd.conf

더보기


# vi /etc/ppp/options.xl2tpd

더보기


# vi /etc/ppp/chap-secrets

더보기


# service xl2tpd restart


3. iptables

# iptables -A FORWARD -s 10.7.0.0/24 -j ACCEPT

# iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE


$ echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf




* 안되면 재부팅을 해보자. 아마 IPSEC 설치 후 재부팅을 해야하는 것으로 안다.(아닐수도)

Posted by iolate


쓸일이 있어서... 응시를 했다. (무쓸모가 될 가능성이 높지만)


LPIC-1 은 101-400, 102-400 두개의 시험을 쳐서 통과하면 자격을 준다.

왜 아직 Certifications 에 아무것도 없는진 모르겠지만 시간이 지나면 넣어주겠지...

글 수정하는 동안에 Certificate 메일이 왔다.


시험당 60문제, 800점 만점에 500점 이상시 통과. 60문제인데 문제마다 배점이 다르다.

시험당 $170 였는데, 난 결제하니 한화로 20만 9천원 정도 나오더라.. 두개보면 42만원..ㅠㅠ


원래 리눅스를 쓰던 사람이라면 대부분의 문제의 답을 이미 알거나, 한번 보면 바로 알 정도의 난이도?

물론 주로 사용하는 배포판에 따라 좀 갈리긴 할 듯.


근데 그런거 상관없이 덤프에서 보기 순서 안바꾸고 나오니 암기만 잘하면 딸 수 있다... 그래서 더 돈이 아깝다..



시험 응시

1. lpi.org 에서 회원가입 및 LPI ID 를 발급받는다.

2. Pearson VUE 에서 시험 신청을 한다

1) 회원가입 및 로그인

2) For test taker

3) LPI 검색

4) LPI ID 입력

5) 원하는 시험장소 및 시험시간 선택 (시험 장소에 따라 가능일자 / 시간이 다르다)

6) 결제

3. 시험장소(보통 학원)에 응시하러 간다

1) 시험치러 왔다고 말한다

2) 신분증, 같은 이름의 카드(영문 이름 때문인 듯)가 필요

3) 서명하고 사진촬영

4) 컴터 앞에 앉아서 시험치고 끝


시험 시간은 응시 장소에 따라 꼭 정해진 시간을 지킬 필요는 없는 것 같다. 30분 일찍 갔는데 그냥 쳤음.



덤프

내가 구한 덤프는

- 2015년 4/8월자 덤프(101-400, 102-400). 85~120문제 정도로 구성

- 2012년 12월 28일자 덤프(117-101, 117-102). 50여문제를 한 Exam 으로 해서, 여러개 시험으로 구성. 70~110페이지


* 원래 117-101, 117-102 란 이름이였는데 각 101-400, 102-400 으로 바뀌었다.


인데, 첫번째꺼만 봐도 될 듯. 두번째껀 그냥 앞쪽 시험 2개 정도만 훑어보고 들어갔다.



101-400

커널과 관련된 부분은 그냥 외웠고, 그걸 제하면 한번씩 해봐서 알거나, 새로운 명령어 하나 배운다는 기분으로 공부했다.

물론 덤프에 나오는 문제 위주로.


117-101 덤프에서도 몇문제 나왔는데, 뭐 몰라도 통과할 수 있거나 안봤어도 맞출 수 있었을 듯

8분만에 풀고 나왔다. 너무 일찍 나왔다고 다음 시험은 그러지 말라더라.


+ 1월 9일 오늘 아는 사람이 응시하고 왔는데, 101-400 덤프에서 1문제 정도 나오고 다 달라서 당황하셨다고 한다. 다행히 500/500 으로 통과하셨다지만... 102-400 은 그대로 나왔다고 하네... 왜지?;;


102-400

xwindows, 프린터(cups) 같은 것들이 나오는데 난 거의 안써본 것들이라 외웠다.

쉘스크립트나 네트워크 쪽 문제들은 그냥저냥...

뜬금없이 SQL 쿼리가 나오는데(리눅스 시험에서 대체 왜?) 뭐... 어렵진 않다.


전체적으로 101-400 에 비하면 덤프를 처음 봤을때 답을 모르겠는 문제들이 많았음.

근데 어차피 덤프보고 공부/외우면 된다. 102-400 덤프에서 다 나온 것 같다.


102-400 덤프에 문제 오류가 3~4개 정도 있었던 것 같은데.. 그냥 스스로 고칠 수 있거나 틀려도 탈락 안한다.

117-102 덤프는 설명이 다 달려있어서 좋더라.


마찬가지로 8분만에 다 풀었는데, 앞시험에서 나오고 나니 30분 정도는 앉아있어 달라고 하셔서 나머지 20분을 멍하게 시간때우다가 나왔다.



총평

시험치기 전날 2~3시간 정도 보면 매우 쉽고 무난하게 통과한다.

리눅스 시스템을 처음 접한 사람이라면 잘 모르겠다.


뭐 틀렸는지 안 알려준다. 궁금하다.


Posted by iolate

교내망에 있는 서버 하나가 접근이 꼬여서 원인을 찾다가 기록함.


우선 서버들의 네트워크 구성


메인서버 - Windows Server 2012 R2    - 교내망(10.x.x.5), 가상 스위치(192.168.137.1, host)

서버 A - Ubuntu 14.04                  - 교내망(10.x.x.6), 가상 스위치(192.168.137.6), 도커

서버 B - Ubuntu 14.04                  - 교내망(10.x.x.7), 가상 스위치(192.168.137.7)

서버 C - CentOS                            - 가상 스위치(192.168.137.2)


교내 다른 장비에서 메인서버, 서버 B 로는 교내망 주소로 바로 접근이 되는데,

서버 A 는 교내망 주소를 사용해도 서버 B 를 거쳐야만 접속이 되었다.

똑같은 교내망 IP 인데 말이지..


원인을 찾아보다가 서버 A의 outbound ip 가 메인서버의 ip 로 찍히는 것을 발견,

기본 라우터 설정을 바꿔주면 왠지 해결될 것 같은 느낌이 왔다.


서버 A:~$ ip route list

default via 192.168.137.1 dev eth1 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.6 

172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.6

서버 B:~$ ip route list

default via 10.x.x.1 dev eth0 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.7 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.7 


이유는 모르겠지만 서버 A의 기본 라우터가 eth1 로 되어있다. 바꿔주자.


서버 A:~$ sudo ip route change to default dev eth0 via 10.x.x.1

서버 A:~$ ip route list

default via 10.x.x.1 dev eth0 

10.x.x.0/23 dev eth0  proto kernel  scope link  src 10.x.x.6 

172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1 

192.168.137.0/24 dev eth1  proto kernel  scope link  src 192.168.137.6



via 뒤의 아이피는 eth0 의 gateway 주소를 적어주면 된다.


이후 ssh 접속이 잘됨을 확인.

재부팅해도 유지된다.


왜 바뀌었는지 모르니 다음에 또 바뀔 가능성이 있을 수 있지만.... 일단 해결!

Posted by iolate

NFS 설치

# yum install nfs-utils


NFS 서버 설정

# vi /etc/exports

[Path]    [Client IP]([Options])


Options

ro - 읽기 전용 (기본값)

rw - 읽기/쓰기 모드

root_squash - Client의 root를 익명 사용자(nobody)로 매핑 (기본값)

no_root_squash - Client의 root를 NFS 서버의 root로 매핑

all_squash - 모든 사용자를 익명 사용자(nobody)로 매핑

sync - Client와 NFS 서버간 동기적 통신 모드 (기본값, 안전성 향상)

async - Client와 NFS 서버간 비동기 통신 모드 (속도 향상)

secure - 마운트 요청 시 포트를 1024 이하로 할당 허용 (기본값, 1024 이하 포트는 root만 설정 가능)

insecure - 마운트 요청 시 1024 포트 이상도 할당 허용

anonuid=<uid>

anongid=<gid>



설정 후

# systemctl restart nfs-server


재부팅 후에도 자동으로 실행되게끔
# systemctl enable nfs-server
도 해준다.


* 서버에서

# showmount -e 127.0.0.1

을 실행해보고,

clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)

에러가 나온다면,
# service rpcbind start
을 해주자.



클라이언트에서

$ showmount -e <Server IP>

로 서버의 exports 리스트를 확인할 수 있다.


테스트 마운트는

# mount -t nfs <Server IP>:<Server Path> <Client Path>

로 가능.


/etc/fstab 설정도 가능하다.

<Server IP>:<Server Path> <Client Path> nfs hard,intr 0 0


이때 옵션(예시에서 hard,intr)은 

19.4. Common NFS Mount Options

여기서 찾아보자.



참고

NFS 서버 구성 - http://blog.helperchoi.com/76

http://unix.stackexchange.com/questions/64915/nfs-connection-refused

http://www.unixmen.com/setting-nfs-server-client-centos-7/

Posted by iolate
TAG centos, nfs, RPC


/etc/sysconfig/network-scripts/ifcfg-eth?


파일을 수정하면 된다.


* DHCP 설정

BOOTPROTO=dhcp


* STATIC 설정

BOOTPROTO=none

IPADDR = "192.168.137.2"

NETMASK = "255.255.255.0"

GATEWAY = "192.168.137.1"

DNS1 = "192.168.137.1"


** 변경 후 네트워크 재시작

# systemctl restart NetworkManager

# systemctl restart network



재부팅시 네트워크 어댑터가 자동으로 시작되지 않는다면,

ONBOOT=no

ONBOOT=yes 로 바꿔준다.


수동으로는

시작: # ifup eth?

종료: # ifdown eth?



참고

CentOS 7.0에서 네트워크 설정 - http://manseok.blogspot.kr/2014/08/centos-70.html

CentOS - eth0 자동 활성화 시키기 - http://avisynth.tistory.com/10

Posted by iolate

CentOS7 에서 XFS 로 포맷을 진행하려 하는데, 2TB 까지밖에 파티션이 생성안되는 문제가 있었다.


대충 찾아보니 fdisk가 하위호환때문에 2TiB 로 고정한다는 듯.

수정된 fdisk 를 사용하면 된다고 한다.


딴걸 설치하기는 귀찮고...

http://unix.stackexchange.com/questions/29078/how-to-partition-22tb-disk

글에서 주는 해결책을 옮기면서 조금 수정해봄.



1. xfs 설치 확인

mkfs.xfs 를 그냥 실행하여 설치가 되어있는지 확인해본다. 없다면 설치.

# yum install xfsprogs


2. 디스크 확인

# fdisk -l


나의 경우(그리고 글에서 설명하는 경우)는 /dev/sdb 이다.

본인 상황에 맞게 아래 예시에서 알아서 바꾸자.


3. 파티션 만들기

# parted /dev/sdb mklabel gpt

# parted /dev/sdb mkpart primary xfs 1 -1


나의 경우 두번째 명령어가 실행이 안되는 것 같았는데....


이 과정을 스킵해도 된다고 한다.

스킵할 경우 아래 예시에서 /dev/sdb1 대신에 /dev/sdb 를 사용할 것.


스킵할 경우 sector alignment 문제(나도 뭔지 모름)가 없는 대신 윈도우나 맥 등에 연결할 경우 매번 포맷하라는 메세지가 뜬다고 한다.



4. 파티션 포맷

# mkfs.xfs -f -L somelabel /dev/sdb1


라벨(L 옵션)은 fstab 에 기록할때 대신 사용될 수 있는 것 같다.


5. 디렉토리 생성 & 테스트 마운트

# mkdir /storage

# mount -t xfs /dev/sdb1 /storage


마운트가 되었다면

# df -Th /storage

로 확인해보자!


6. fstab 수정

# vi /etc/fstab

파일 가장 하단에

LABEL=somelabel    /storage        xfs    defaults    0 0

추가


7. mount / umount

이후에는

# mount /storage

만 입력해도 마운트할 수 있다.


마운트 해제는

# umount /storage



참고

http://unix.stackexchange.com/questions/29078/how-to-partition-22tb-disk


일반적인 포맷은 여기!

http://ask.xmodulo.com/create-mount-xfs-file-system-linux.html


Posted by iolate

Docker 의 설치 및 간략 사용법 정리.

UBUNTU 14.04 64bit 에서 작업하였음.


1. docker 설치

$ sudo curl -fsSL https://get.docker.com/ | sh

# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

# apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'

# apt-get update

# apt-get install docker-engine


2. (선택)현재 사용자를 docker 그룹에 추가

$ sudo usermod -aG docker $(whoami)


추가한 후엔 로그아웃하고 다시 들어와야, 정상적으로 작동한다.

추가하지 않을 경우 아래 모든 docker 커맨드를 root 권한(sudo)로 실행해야 함.


3. 이미지 받기

docker pull <이미지 이름>:<태그(보통 버전)>

형태로 받을 수 있다.


난 Ubuntu 14.04 를 설치할 예정이므로,

$ docker pull ubuntu:14.04


4. 이후엔 자유.


========================================================


= 명령어 정리 =


$ docker <command>

images: 이미지 목록 출력

ps: 컨테이너 목록 출력

start, stop, restart: 이름 그대로.

attach: 컨테이너 접속

Ctrl+D : 컨테이너 정지 후 빠져나오기

Ctrl+P, Q: 정지하지 않고 빠져나오기

exec: 컨테이너 안에 명령어 실행

rm: 컨테이너 삭제

rmi: 이미지 삭제


$ docker run -i -t --name test ubuntu:14.04 /bin/bash

ubuntu 이미지로 test 이름의 컨테이너를 만들고 bash 실행, 접속

태그를 생략할 경우 latest 이미지를 사용하게 되며, 없을 경우 다운로드 받는다.



참고

Install Docker - https://docs.docker.com/linux/step_one/

Docker 기본 사용법 - http://pyrasis.com/Docker/Docker-HOWTO

Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함