행복둥이들의 이야기

2개의 랜카드를 이용하여 우분투(리눅스) 컴퓨터를 인터넷 공유기로 만드는 방법 본문

컴퓨터 이야기/리눅스 이야기

2개의 랜카드를 이용하여 우분투(리눅스) 컴퓨터를 인터넷 공유기로 만드는 방법

행복둥이들 2010. 4. 28. 14:19
2개의 랜카드가 달린 우분투(리눅스) 컴퓨터를 이용하여 인터넷 공유기(라우터)로 만드는 방법입니다.
HowtoForge의 NAT Gateway, Iptables, Port Forwarding, DNS And DHCP Setup ... 의 글을 참고로 하였습니다. 우분투를 기준으로 하여 설명을 하겠지만 다른 종류의 리눅스에서도 대동소이할 것으로 생각됩니다.

우선 2개의 네트워크 카드(랜카드)가 달려있는 우분투 컴퓨터가 필요하겠죠. 하나는 외부에서 들어오는 인터넷선(WAN Connnection)이 연결되고 다른 하나는 내부 네트워크가 연결이 됩니다. 우분투에서는 각각의 네트워크 카드에 eth0, eth1 ... 등의 형식으로 이름이 붙습니다. 편의상 외부 인터넷선은 eth0 에 연결을 하고, 내부 네트워크는 eth1에 연결을 하겠습니다. 각각의 네트워크 카드가 어떻게 동작하게 될 지를 /etc/network/interfaces 라는 파일에서 정의를 해주게 되는데요, 이 파일을 수정하기 위해 터미널에서 다음 명령어를 입력합니다.
$ sudo vi /etc/network/interfaces
그러면 /etc/netwrok/interfaces 의 내용을 편집할 수 있는 편집기가 뜨는데요, 다음과 같이 내용을 수정합니다.
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address    192.168.0.1
        netmask    255.255.255.0
        broadcast  192.168.0.255
        network    192.168.0.0
간단하게 나마 위 내용을 설명하자면 외부 인터넷선이 연결된 eth0 에서는 DHCP 서버를 통해 주소를 받고, eth1 은 192.168.0.1 이라는 네트워크 주소를 고정적으로 갖는다는 내용입니다. (내부 네트워크 주소는 임의로 수정하여 쓸 수도 있습니다.)
바뀐 설정이 제대로 작동하도록 네트워크를 재시작해줍니다.
$ sudo /etc/init.d/networking restart


다음으로 /etc/hosts 라는 이름의 파일을 수정하여 내부 네트워크에서 호스트네임을 호출하는 것만으로도 우분투 컴퓨터로 연결할 수 있도록 해줍니다.
$ sudo vi /etc/hosts
그러면 개개인의 설정에 따라서 여러 내용이 나올 수 있는데요, 우리는 여기서 단 한 줄만 추가하면 됩니다. 바로 앞서 eth1 에 부여해준 네트워크 주소를 우리가 설정한 호스트 이름으로 설정을 해주는 겁니다. 여기에서는 편의상 ubunturouter라는 호스트 이름을 사용하겠습니다.
127.0.0.1      localhost
192.168.0.1    ubunturouter

자 이제 네트워크 카드 설정은 끝났습니다. 다음으로는 eth1에 연결된 컴퓨터(내부 네트워크에 연결된 컴퓨터)가 자동으로 IP 주소(내부 IP 주소겠죠...)를 받을 수 있도록 해주겠습니다. IP 주소를 자동으로 할당을 하는 것은 dhcp 서버의 기능으로 우분투에서는 dhcp3-server 라는 프로그램을 설치함으로써 dhcp 서버의 기능을 사용할 수 있습니다. 터미널에서 다음과 같이 입력합니다.
$ sudo apt-get install dhcp3-server
dhcp 서버의 설정은 /etc/dhcp3/dhcpd.conf 라는 파일을 수정함으로써 설정을 바꾸어 줄 수 있습니다.
$ sudo vi /etc/dhcp3/dhcpd.conf
위 command 를 입력하면 상당히 복잡한 내용의 설정들이 나오는데요, 이중 글 첫머리에 # 으로 시작하는 구문은 모두 comment 입니다. 걍 한번씩 읽어보시면 도움이 되실 겁니다. 우리는 comment 표시가 되어있지않은 다음의 구문을 수정해줍니다. (일일이 찾아서 고치기 귀찮으시면 전부 지우고 다음 내용을 입력하셔도 됩니다.)
ddns-update-style none;
option domain-name "ubunturouter";
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 192.168.0.1;
default-lease-time 42300;
max-lease-time 84600;
authoritative;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.2 192.168.0.254;
}
여기서 몇가지 설명을 덧붙이자면 두번째 줄의 domain-name 은 앞서 /etc/hosts 파일에서 설정한 호스트 이름을 사용하면 됩니다. 세번째 줄의 domain-name-servers 는 인터넷 공급자의 DNS 서버를 설정해주면 됩니다. 여기에서 예로든 8.8.8.8 과 8.8.4.4 는 google 의 공개 DNS 서버입니다. (각 통신사별 DNS 서버는 여기에서 확인할 수 있습니다.) 네번째 줄의 router ip address 는 /etc/network/interfaces 에서 eth1 에 할당한 주소를 사용하면 됩니다. 다섯번째 줄과 여섯번째 줄의 lease-time 은 dhcp 서버가 IP를 할당한 후 IP 를 유지시켜주는(?) 시간을 설정하는 부분인데 굳이 수정할 필요는 없다고 생각됩니다. 중요한 부분은 subnet ... 이하의 range ... 이 부분인데 dhcp 서버에 의해 자동으로 할당해줄 IP address의 범위를 지정해 주는 부분이라고 생각하시면 됩니다. 이를테면 여기서는 192.168.0.2 부터 192.168.0.254 까지 의 IP address 를 사용합니다.
설정을 마쳤으면 다음과 같이 터미널 명령어를 입력해주어 dhcp 서버를 재시작해줍니다.
$ sudo /etc/init.d/dhcp3-server restart

자 이제 마지막으로 인터넷에서 들어온 신호를 내부 네트워크에 있는 컴퓨터로, 또 내부 네트워크에 있는 컴퓨터의 신호를 인터넷선으로 전달해주는 Packet forwarding 이 남았습니다. 이것을 위해 우선 /etc/sysctl.conf 파일을 수정해주어야 합니다.
$ sudo vi /etc/sysctl.conf
시스템 변수에 대한 여러가지 설정을 변경할 수 있는 부분이 나오는데요. 여기에서 28번째 줄에 있는 # net.ipv4.ip_forward=1 의 맨 앞 # 표시를 없애주는(uncomment) 작업이 필요합니다. (IPv4 의 packet forwarding 이 가능하게 해주는 작업이랍니다... 더불어 31번째 줄에 있는 # net.ipv6.conf.all.forwarding=1 역시 uncomment 해주는 것도 좋겠지요... ^^)
그 다음 /etc/rc.local 파일을 연 다음
$ sudo vi /etc/rc.local
다음 두 줄을 추가해줍니다.
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
참고로 설명을 드리자면 /etc/rc.local 파일은 우분투 시스템이 부팅되면서 가장 마지막에 실행되는 스크립트 파일입니다. 위의 두 줄을 추가해줌으로써 우분투가 매번 부팅될 때마다 iptables 를 이용하여 게이트웨이가 설정이 되는 것입니다.

모든 설정은 이렇게 끝났고, 이제 우분투 컴퓨터를 재부팅하게되면 여러분의 우분투 컴퓨터는 하나의 인터넷 공유기로 사용을 할 수 있을 것입니다.
Comments