리눅스 인터넷 공유(Masquerade)

http://www.otl.ne.kr/243

문서 중 가장 간단하다.

문서를 정리하자면,

다음과 같은 외부와 연결시키고 싶은 네트워크가 있다고 하자.



   _____________
  /                     \               외부 IP               _________              내부 IP
 |   Internet          |           123.12.23.43           |  linux     |          192.168.0.1
 |   google.com    | ——[외부 랜카드]——| machine |——[내부 랜카드]
  \_____________/                                         ———-             |
                                                                                               |        
                                                                                               |
                                                   _____________                ______|_______
                                                  | 192.168.0.2  |             /                      |
                                                  |    내부        |——–|    192.168.0.0    |
                                                  |    컴퓨터     |            |      인트라넷      |
                                                  ————–             \______________/ 

외부 네트워크 카드는 eth0, 외부 IP는 123.12.23.43, 그리고 내부 네크워크 카드는 eth1라고 가정하자.





$> modprobe ipt_MASQUERADE # 만약 실패하더라도 다음을 계속하시오.

$> iptables -F; iptables -t nat -F; iptables -t mangle -F

$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 123.12.23.43

$> echo 1 > /proc/sys/net/ipv4/ip_forward

그리고 보안을 위해:





$> iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

$> iptables -A INPUT -m state –state NEW -i ! eth0 -j ACCEPT

$> iptables -P INPUT DROP # 위의 두 줄이 성공한 경우에만

$> iptables -A FORWARD -i eth0 -o eth0 -j REJECT

이 문서는 GNU Free Documentation License를 따른다.


http://www.gnu.org/copyleft/fdl.html

[Ubuntu] 무선랜 설정 시 볼 만한 문서

웬만한건 드라이버 잡으면

$ sudo iwconfig wlan0 essid GoogleGuest
$ sudo dhclient wlan0


하면 된다.

켰을 때 자동으로 연결 안하길래 아래와 같이 추가해 줬다.
/etc/network/interfaces


auto wlan0
iface wlan0 inet dhcp
        wireless_essid GoogleGuest

 


[Linux] screen 사용법

예전에 screen + vim 조합으로 열심히 써서 손에 익었던 것도 잠시.. 몇 년이 지나고 나니 어느새 다 잊어버렸다.
screen 을 이용하면 vim 에서 창을 나누지 않고 여러 화면을 전환하면서 쓸 수도 있고, 새로운 파일 들을 열어서 볼 때도 매우 편리하다.  또한, 원격지에서 접속 후 일을 하다가 중간에 작업은 진행시켜 둔 채로 접속을 끊고, 다른 곳에서 접속하여 하던 작업을 이어서 할 수 있다는 장점(이게 난 가장 좋다!)도 있다.
사용법을 찾아보니 이 곳이 정리가 너무 잘되어 있다.

내가 자주 사용하거나 유용한 몇 가지만 요약하여 정리하면 다음과 같다.

1. screen 생성시

 

$ screen -S <세션명>

또는 그냥

 

$ screen

2. 어떤 screen 이 있는지 보고 싶을 때

 

$ screen -list

3. 이전에 생성한 screen으로 돌아가고 싶을 때

 

$ screen -r [세션명]

4. 작업 중 새로운 screen 생성

 

Ctrl + a, c

5. 현재 screen 의 Title 명 변경

 

Ctrl + a, A

6. 작업 중 다른 screen으로 옮기고 싶을 때
6.1. 바로 이전에 사용하던 screen

 

Ctrl + a, a

6.2. screen 번호와 Title 보고 이동(5 항목과 함께 이용하면 편리하다)

 

Ctrl + a, ” (화살표 키 이동 후 엔터)

6.3. 번호 창으로 이동

 

Ctrl + a, [0-9]

6.4. 다음 screen

 

Ctrl + a, n

6.5. 이전 screen

 

Ctrl + a, p

7. screen 을 잠깐 사용 중인 상태로 떼어놓고(detach) 싶을 때

 

Ctrl + a, d

 

8. screen 사용 시 마우스로 화면 스크롤이 안되고, command history가 스크롤 될 때 ~/.screenrc 에 다음 내용을 적는다.

termcapinfo xterm* ti@:te@

corkscrew 를 이용해서 git proxy 이용하기

1. corkscrew 를 다운로드 및 설치(우분투는 그냥 apt-get install corkscrew)
1.1. http://www.agroman.net/corkscrew/ 에서 구할 수 있다. wget을 이용하여 다운로드.

1.2. 설치

# configure; make; make install

1.3. /usr/local/bin/corkscrew 가 설치되었음을 확인.

2. git proxy를 위한 스크립트 작성
2.1. /usr/local/bin/gitproxy.sh 작성

#!/bin/bash
/usr/local/bin/corkscrew <Proxy IP> <Port> $*

2.2. ~/.bashrc 에 다음 추가

$ export GIT_PROXY_COMMAND=/usr/local/bin/gitproxy.sh

참고 : http://cafe.naver.com/embeddedcrazyboys.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4981

git daemon 서버 설정

/pub/repo 에 “git clone git://xxx.xxx.xxx.xxx/repo/kernel kernel” 과 같이 하여 repository를 설정하였다면

# git daemon –verbose –export-all –base-path=/pub/repo –detach

git://<새 서버>/pub/repo/kernel 등의 URL로 접근이 가능.

touch .git/git-daemon-export-ok

git config daemon.receivepack=”true”

우분투 설치 CD를 USB로 부팅

http://unetbootin.sourceforge.net/ 에서 unetbootin 을 다운받는다.
우분투 설치 ISO 파일을 http://www.ubuntu.com/getubuntu/download 에서 다운로드받는다.
미러를 통해 다운로드받는 것이 빠르다.
USB를 꽂고, unetbootin 을 실행시킨 후 Disk image의 ISO 에 다운로드 받은 ISO를 선택한 후 OK를 누른다.

1~4까지 진행된 후 뽑아서 쓰면 된다.
윈도우즈가 깨진 노트북에서 외장하드로 파일 복사(데이터 백업)가 필요해서 사용했다.

[Linux] 디렉토리 안의 모든 파일들을 일일이 링크 걸기 위한 방법

디렉토리 안의 모든 파일들을 일일이 심볼릭 링크를 걸고 싶을 때 Perl을 이용해서 하는 방법이다.(절대 경로를 준다면 cp -sR 옵션으로 줄 수도 있지만..)

다음을 link.pl 등의 이름으로 저장한다.

use File::Find;
$src = shift; # first arg is source
$dst = shift; # second arg is dest
                find(sub {
                                                (my $rel_name = $File::Find::name)
                                                =~ s!.*/\./!!s;
                                                my $src_name = “$src/$rel_name”;
                                                my $dst_name = “$dst/$rel_name”;
                                                if (-d) {
                                                print “mkdir $dst_name\n”;
                                                mkdir $dst_name, 0777
                                                or warn “mkdir $dst_name: $!”;
                                                } else {
                                                print “ln -s $src_name $dst_name\n”;
                                                symlink $src_name, $dst_name
                                                or warn “symlink $src_name $dst_name: $!”;
                                                }
                                                }, “$src/./”);

perl link.pl <SRC PATH> <DST PATH> 로 한다.
<DST PATH> 는 mkdir로 만들어 놓고 해야 한다.

Vimdiff 사용법

linux에서 (거의) 기본적으로 제공하는 vim 을 이용하면 diff 툴을 사용할 수 있다.
vimdiff 로 실행가능하고 vim 에서 -d 옵션을 사용해서 사용할 수도 있다.

간단한 사용법은 다음을 참고하자.
http://amjith.blogspot.com/2007/07/visual-diff-tools-in-linux.html

정리하면,
do – 다른 윈도우의 변경 사항을 현재 윈도우로 가져오기
dp – 현재 윈도우의 변경 사항을 다른 윈도우로 넣기
]c – 다음 변경 사항으로 이동
[c – 이전 변경 사항으로 이동
Ctrl W + Ctrl W – 다른 윈도우로 이동

다른 윈도우로 이동할 때는 Ctrl + W <방향키> 를 이용할 수도 있다.