다음 이전 차례

3. 네트워킹 구성하기

자, 지금까지 여러분은 게이트웨이 컴퓨터에 리눅스를 설치했다. 여러분은 네트워크 카드 중 하나를 구성했고, 인터넷에 접속을 설정했다. 그렇지만, 우리는 무에서부터 시작할 것이고 어떤 것도 전혀 구성되지 않았다고 가정할 것이다.

root로서 로그인 하라. 이 문서에 나온 모든 지시는 여러분이 root로서 로그인 했다고 가정한다.

리눅스 커널은 두 장의 이더넷 카드를 eth0eth1로서 참조한다. 이제부터는 또한 그것들에 대해 언급하게 될 방법이 될 것이다. 애로 사항은, 어느 것이 어떤 것인지이다. 경우의 적어도 50%는 쓰이도록 보증한다면, 판별하는 "간단한" 방법이 있다. 마더보드를 가진 컴퓨터를 책상 위에 수평적으로 놓고 뒷 패널(back panel)을 여러분을 향하게 한다. (만일 여러분이 그걸 열고 그 위에서 무엇인가 하게 되는 것과 같이 하도록 한다.) 가장 왼편의 카드는 eth0이다. -- 여러분은 약간의 마스킹 테이프로 라벨을 붙이고자 할지 모른다. 지금, 종이 위에 eth0eth1 둘 모두의 제조와 모델을 써 두어라.

자, eth0eth1이 커널에 의해 자동적으로 인식되는지 여부를 보자. ifconfig eth0ifconfig eth1를 입력한다. 두 경우에 있어, 만일 커널이 카드를 인식하고 있으면, 여러분은 (숫자와 그 밖의 것은 상이할 수 있음을 명심하여) 이와 같은 것을 보아야 한다:

eth0   Link encap: Ethernet   HWaddr 00:60:67:4A:02:0A 
       inet addr:0.0.0.0  Bcast:0.0.0.0  Mask:255.255.255.255
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:466 errors:0 dropped:0 overruns:0 frame:0
       TX packets:448 errors:0 dropped:0 overruns:0 carrier:0
       collisions:85 txqueuelen:100 
       Interrupt:10 Base address:0xe400
 

만일 커널이 네트워크 카드를 인식하지 못한다면 이와 같은 것을 보게 될 것이다:

eth0: error fetching interface information: Device not found.
 

3.1 네트워크 드라이버를 구성하기

만일 카드를 둘 다 찾았으면 다음 섹션으로 넘어 가라. 아니면, 이 섹션을 읽어라.

자, 이미 아는 바와 같이 카드가 하나 혹은 둘 모두가 커널에 의해 인식되지 않는다. 실제로, 이것은 문제가 되지 않는다. 반드시 해야 할 것은 카드를 찾는 방법을 커널에 좀 더 명시적으로 알리는 것이다. 여기에는 우여곡절이 많고, 그 모두를 다루지는 않을 것이다. 현행의 것이 어려워질 때 Ethernet HOWTO로 바꾸어라. 여기에 몇 가지 요약된 조언이 있다.

이제, 여러분은 eth0eth1의 제조원과 모델이 무엇인지 알기 때문에 Ethernet HOWTOcompatibility page로 옮겨가서 카드를 찾아낼 수 있다. 추천된 드라이버와 카드가 필요로 할지 모르는 특정한 옵션에 대한 정보를 메모하라. 적어 두라.

구성 파일을 편집할 때다! 편집하게 될 파일은 /etc/conf.modules이다. 여러분이 선택한 텍스트 에디터(text editor)로 이 파일을 열어라. 이 파일에 포함될 수 있는 매우 많은 가능성과 조합이 있기 때문에 한 예로서 나 자신의 게이트웨이를 제공할 것이다. 나는 VIA Rhine 칩에 기반한 PCI 10/100Mb 카드와 10Mb NE2000 ISA 복제품(clone)을 가진다. 나는 내부 네트워크를 위해 100Mb 카드를, 외부 연결을 위해 10Mb 카드를 사용한다. 나의 /etc/conf.modules 파일은 이것과 같다:

alias parport_lowlevel parport_pc 
alias eth0 ne 
options ne io=0x300 irq=10 
alias eth1 via-rhine 
 

나의 conf.modules 파일을 다음과 같이 펼쳐 보인다.

여러분은 두 개의 카드를 위해 conf.modules에 alias 기재사항을 가진다는 것을 보장하고, 모든 ISA 카드를 위한 options 행을 정확하게 만들고자 할 것이다. 여러분은 설치하는 동안 여러분이 구성한 이더넷 카드를 위한 conf.modules에 이미 여러 행들을 이미 가지고 있을지 모른다.

여러분이 conf.modules을 편집하는 것을 완료하였을 때, ifconfig eth0ifconfig eth1을 다시 시도하라. 만일 제작사의 매뉴얼이 없이 여러분이 IO 주소와 IRQ를 실수하고 있다면 시행착오를 여러 번 겪을 것이다.

두 개의 동일한 네트워크 카드

그래서, 여러분은 진짜로 진짜로 현명하였고, 여러분의 리눅스 게이트웨이를 위해 동일한 네트워크 카드를 두 개 샀다. 여러분이 그것들을 함께 작동하도록 할 수 없다면? 걱정하지 마라. 그것들이 공존하도록 하는 것은 /etc/conf.modules에서 정확한 구문을 사용하는 것의 문제일 뿐이다. 이 예를 위해 주소와 IRQ 번호는 만들어졌고, 조화된 한 쌍의 NE2000 복제품을 구매했다고 가정하겠다. /etc/conf.modules 파일은 이것과 같다:

alias eth0 ne
alias eth1 ne
options ne io=0x330,0x360 irq=7,9 
 

The addressing options are all given on the same line, and the first number for each addressing type is for eth0, the second number for eth1. 주소를 지정하는 옵션은 동일한 행에 모두 주어지고, 각 주소를 지정하는 형태를 위한 첫 번째의 수는 eth0를 위한 것이고, 두 번째의 수는 eth1를 위한 것이다.

3.2 내부 네트워크를 구성하기

"내부 네트워크"는 여러분의 모든 가정/사무실 장비가 통하게 되는 네트워크이다. "외부 네트워크"는 리눅스 박스의 다른 쪽에 있는 대규모의 무시무시한 인터넷이다. 대체로, 내부 네트워크는 리눅스 박스에 의해 외부 네트워크로부터 완전히 격리될 것이다. 이는 중간 정도의 강력한 방화벽으로서 운용될 것이다.

네트워크 장치

여러분의 드라이버가 작동하고 있고 ifconfig에서 eth0eth1를 둘 다 볼 수 있으므로 내부의 가정용 네트워크를 설정하여야 하는 때이다. eth1에 내부 네트워크를, eth0에 외부 장치를 둔다고 가정하겠다.

여러분의 내부 네트워크는 개인용 네트워크가 될 것이고, 이를 위해서 내부 네트워크 연결을 위해 예약된 특정한 네트워크에 있게 될 것이다: 192.168.1.0. 만약 친구를 감명시키기를 원하면, 이는 "개인용 C 클래스"이다.

우선 네트워킹이 가능한 상태인지 확인할 필요가 있다. /etc/sysconfig/network파일을 편집하여 다음의 행들이 있는지 확인하라.

NETWORKING=yes 
FORWARD_IPV4=yes
 

첫 번째 행은 부트(boot) 시에 네트워크 장치가 불려 오도록 리눅스한테 알린다. 두 번째 행은 IP 전달(IP forwarding)을 가능케 하도록 리눅스한테 알린다. 섹션 4에서 매스커레이딩을 구성하는 것을 시작할 때 이것이 필요하다.

래드햇 6.2 주의: IP 전송과 매스커레이딩을 적절하게 지원하기 위해서 레드햇 6.2는 /etc/sysctl.conf 파일에 변경을 필요로 한다. 다음의 행들이 있는지 확인하고 정확한 값을 지정한다:

net.ipv4.ip_forward = 1 
net.ipv4.ip_always_defrag = 1 
 

레드햇과 레드햇 파생품을 위한 모든 네트워크 인터페이스 설정은 /etc/sysconfig/network-scripts 디렉토리 내의 파일들에 포함된다. 그 디렉토리에 들어가서 새 파일로 ifcfg-eth1를 만든다. ifcfg-eth1 파일 내에 다음과 같은 내용을 둔다:

DEVICE=eth1 
IPADDR=192.168.1.1 
ONBOOT=yes
 

이 코드는 부트 시에 eth1을 구성하고 개별적인 IP 주소를 주도록 네트워크 스크립트한테 알린다. 다음과 같은 명령어와 함께 새 설정을 사용하여 여러분의 네트워크를 활성화 하라: /etc/rc.d/init.d/network restart

DHCP 서버

DHCP 서버는 IP 주소를 가지는 내부 가정용 네트워크 상의 장치를 자동적으로 구성할 것이다. 이것은 랩톱을 가진 사람들을 위해 매우 유용하다. 그들이 자신들의 장비를 간단히 꼽기만 하면 즉시 적절하게 구성될 수 있다. 만일 여러분이 내부 네트워크 상에서 DHCP 서버를 원하지 않는다면 다음 섹션으로 넘어 가라.

우선 여러분은 DHCP 서버가 설치되었는지 확인할 필요가 있다. 리눅스 CD를 마운트하고 dhcp RPM을 설치하라. 이제 /etc/dhcpd.conf 파일을 편집하여 다음과 같은 내용을 넣는다:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.2 192.168.1.60;
  default-lease-time 86400;
  max-lease-time 86400;
  option routers 192.168.1.1;
  option ip-forwarding off;
  option broadcast-address 192.168.1.255;
  option subnet-mask 255.255.255.0;
}
 

만일 여러분이 리눅스 박스를 캐슁 도메인 네임 서버(caching domain name server)로 설정하고자 한다면, 다음과 같은 옵션을 추가하라:

option domain-name-servers 192.168.1.1;
 

If you know your outside DNS addresses and you are not going to use the Linux box for DNS, insert the following option, where x.x.x.x and y.y.y.y are IP numbers of the DNS servers: 만일 여러분이 외부의 DNS 주소를 알고 있고 DNS를 위해 리눅스 박스를 사용하지 않을 것이라면, 다음과 같은 옵션을 추가하라. 여기서, x.x.x.x와 y.y.y.y는 DNS 서버의 IP 번호이다.

option domain-name-servers x.x.x.x, y.y.y.y;
 

만일 여러분이 윈도우즈(Windows) 컴퓨터를 위해 리눅스 박스에 삼바(Samba) 파일 공유를 실행할 것이라면, 리눅스 박스를 기본적인 WINS와 브라우징(browsing) 서버로 사용하도록 다음과 같은 옵션을 추가하라:

option netbios-name-servers 192.168.1.1; 
option netbios-dd-server 192.168.1.1; 
option netbios-node-type 8; 
option netbios-scope "";
 

삼바와 WINS를 구성하는 것은 이 문서의 범위를 벗어난다. 만일 몇 가지 지침이 필요하다면 SMB HOWTO로 시작하고, 거기서부터 계속하라.

아직도 두 서너 단계가 더 남아 있다. 다음에, /etc/rc.d/init.d/dhcpd 파일을 편집하여 다음과 같은 행을 찾는다.

/sbin/route add -host 255.255.255.255 dev eth1
 

윈도우즈 DHCP 클라이언트는 DHCP 응답에 있어 특이한 브로드캐스트 주소를 필요로 하고, 이 명령은 리눅스/TCP 스택이 그것을 만들어 내도록 한다. 만일 여러분이 파일에서 그 행을 찾을 수 없으면 추가하라. 만일 여러분이 그런것과 같은 행을 찾는다면 그것이 참조하는 장치가 eth1인지 확인하라.

다음 단계는 기본 장치로서 eth1을 사용하도록 /etc/rc.d/init.d/dhcpd 파일을 변경하는 것이다. 다음 행

daemon /usr/sbin/dhcpd
 

daemon /usr/sbin/dhcpd eth1
 

으로 대체하라. 이제 DHCP를 시동할 준비가 됐다. 우선 명령을 사용하여 DHCP 서버를 시작한다: /etc/rc.d/init.d/dhcpd start

마지막으로, DHCP 서버가 리부트(re-boot) 시에 시작할 것인지 확인하여야 한다. DHCP 서버의 어떤 RPM 패키지는 매번 서버가 시작하는 것을 보증하는 지시를 포함하지 않는다. 그래서, chkconfig dhcpd on 명령을 행함으로써 서버가 시작하도록 보장할 것이다.

이 명령으로 인해 레드햇은 /etc/rc.d 아래의 다양한 실행수준(runlevel)의 디렉토리에 DHCP 시동 스크립트를 추가한다. 실행수준 3과 5(multiuser console과 multiuser X)에서는 DHCP 서버가 시작된다. 실행수준 0,1,6(shutdown, single user, reboot)에서는 DHCP 서버는 멈춘다.

클라이언트 컴퓨터

만일 여러분이 DHCP를 설정하였다면, 클라이언트 컴퓨터를 구성하는 것은 매우 쉽다: 단지 DHCP 구성을 가능케만 한다. 윈도우즈 컴퓨터에 대해 이것은 "제어판", 그 다음에 "네트워크" 옵션을 여는 것을 포함한다. "TCP/IP" 프로토콜을 찾고, "구성"하도록 선택한다. "자동으로 IP 주소를 받기"에 해당하는 박스를 체크하고, 변경을 적용하고, 리부트 한다.

리부트 하기 전에 다음과 같은 명령을 입력해 보고 싶을지 모르겠다: tail -f /var/log/messages 이것은 리눅스 시스템 로그를 계속하여 지켜볼 것이다. 만일 모든 게 정상적이면, 윈도우즈 컴퓨터를 리부트 할 때, IP 주소를 요청한 것을 보게 될 것이고, DHCP 서버가 응답하는 것을 보게 될 것이다. Control-C는 tail -f 명령을 종료한다.

만일 여러분이 DHCP를 설정하지 않았다면, 구성은 역시 상당히 쉽다. 다시 "제어판"으로부터 "네트워크" 옵션을 열고, TCP/IP 프로토콜을 구성하기 위해 선택한다. 여러분은 클라이언트 컴퓨터한테 192.168.1.0(네트워크 주소), 192.168.1.255(브로드캐스트 주소) 또는 192.168.1.1(여러분의 리눅스 서버)를 제외한 192.168.1.0 네트워크 내의 어떤 주소든지 할당할 수 있다. 결코 두 대의 컴퓨터한테 동일한 주소를 부여해서는 안 된다. "게이트웨이" 주소를 192.168.1.1에 설정하라. 그래서, 외부로 나가는 트래픽(traffic)이 리눅스 게이트웨이를 통해 보내진다.

The IP Masquerading HOWTO has very detailed information on client configuration in the Configuration Section. IP Masquerading HOWTOConfiguration Section에 클라이언트 구성에 관해 매우 상세한 정보를 가진다.

일반적으로, 클라이언트 컴퓨터를 구성하기 위해서 DHCP 구성을 가능케 하거나 192.168.1.1의 게이트웨이를 가지는 192.168.1.X 네트워크에서 주소를 수동으로 할당한다. 만일 여러분이 캐슁 DNS 서버(아래를 보라)를 구동하거나 DNS를 네트워크 제공자에 의해 할당된 주소로 돌린다면 DNS 서버는 둘 다 192.168.1.1이 되도록 한다.

DNS 서버

리눅스 박스를 캐싱 DNS 서버로 설정하는 것은 넷서핑 속도를 (조금) 향상시킬 것이다. 대개 사용되는 DNS 주소는 여러분의 네트워크 내부에서 캐쉬 되어지고 외부로부터 가져올 필요가 없기 때문이다.

만일 여러분이 완전한 기능을 갖춘 DNS에 관심이 있다면 복잡한 것들을 수많이 배워야 한다. DNS HOWTO가 이용 가능하고, DNS and BIND책은 좋은 (그리고 매우 이해력이 좋은) 참고 문서이다.

여러분의 클라이언트 장비들을 캐슁 서버로 이용하기 위하여 리눅스 게이트웨이를 그것들의 주 DNS 서버로 사용하도록 반드시 구성되어져야 한다. 섹션 3.2.2에서 보여진 DHCP 지시자는 이를 성취하는 한 가지 방법이다. 만일 여러분이 클라이언트 컴퓨터를 직접 손수 구성하고 있다면, 장비의 IP 주소를 지정하기 위해 사용한 동일한 콘트롤 탭으로 DNS 구성을 변경 가능하다.

DNS 서버를 설치하기 위하여 먼저 bind RPM을 설치한다. 그 다음에 caching-nameserver RPM을 설치한다. 이 시점에서, 여러분은 거의 준비됐다.

설치됨에 따라, 캐슁 서버는 제대로 작동할 것이다. 그러나 만일 여러분이 인터넷 제공자의 DNS 서버의 IP 주소를 안다면, /etc/named.conf 파일을 편집하여 directory 행 이후에 다음의 행을 추가함으로써 성능을 조금이라도 향상시킬 수 있다 (여기서, x.x.x.x와 y.y.y.y는 주 DNS 서버와 보조 DNS 서버이다):

forwarders { x.x.x.x; y.y.y.y; }; 
 

이 변경은 여러분의 DNS 서버가 주어진 주소의 검색에 있어 인터넷을 샅샅이 뒤지기 전에 우선적으로 ISP의 DNS 서버를 조회하도록 한다. ISP 서버는 종종 DNS 정보를 충분히 캐쉬 하고, 여러분의 서버가 할 수 있는 것보다 훨씬 빠른 응답을 제공한다.

named 데몬은 지난 12 개월을 지나는 동안 몇 가지 보안 문제를 안고 있었다. 그래서, 여러분은 가장 최신 버전을 구동하고 있어야 하고, 보안을 강화하기 위해 기본 설정에 몇 가지 변경을 가하는 것이 매우 중요하다.

  1. bind의 버전을 점검하고 적어도 8.2.2가 되는지 확인한다. Red Hat Updates 또는 Mandrake Updates 사이트로 가서 가장 최신 버전을 점검하라.
  2. /etc/named.conf 파일에 forwarders 행 이후에 allow-query { 192.168.1/24; 127.0.0.1/32; }; 행을 추가함으로써 로컬 네트워크만에 한해 여러분의 네임 서버에 접근을 제한하라.
  3. 여러분의 네임서버를 root로 구동하는 것을 피하라. 만일 여러분의 서버가 root로 구동 중이라면, 서버의 익스플로잇(exploit)이 이기적인 이용자한테 root 권한을 허용하게 될 것이다. 만일 여러분이 서버를, nobody와 같이, 무능한 사용자로 구동한다면, 네임 서버 익스플로잇의 위험을 줄일 수 있다. 여러분의 네임 서버를 nobody로 구동하려면, /etc/rc.d/init.d/named 파일을 편집하여 daemon named 행을 daemon named -u nobody -g nobody로 고친다.

여러분의 DNS 서버가 부트 시에 시작할 것인지 확인한다: chkconfig named on. 다시, 이는 서버는 부트 시에 보통의 실행수준(3과 5)에서 시작될 것이라는 것을 보증한다.

자, 이제 여러분은 DNS 서버를 시작할 수 있다: /etc/rc.d/init.d/named start

내부 네트워크를 시험하기

외부 네트워크를 구성할 때까지는 (인터넷 상에서 다른 DNS 서버와 연결되어야 하기 때문에) DNS 서비스는 작동하지 않을 것이다. 그러나, ping 프로그램을 사용하여 기본적인 내부 연결 상태를 검사할 수 있다.

여러분의 클라이언트 컴퓨터 중 한 대에서 터미널 (MSDOS) 창을 열고, ping 192.168.1.1를 입력한다. 이는 패킷을 규칙적인 간격으로 여러분의 리눅스 컴퓨터로 송출하고 여러분의 리눅스 컴퓨터는 패킷을 되돌려 주게 될 것이다. 만일 제대로 작동 중이면, 한 벌의 패킷 회신을 수 차례 보아야 한다.

3.3 외부 네트워크를 구성하기

이제 기꺼이 외부 네트워크를 구성할 수 있다. 인터넷 제공자가 리눅스를 얼마나 제대로 지원하는지에 따라, 때때로 이것은 어려울 것이다. ADSL 이슈를 다소 자세히 취급하는 ADSL mini-HOWTO이 있다. 만일 내가 Cable Modem HOWTO를 찾을 수 있으면, 또한 그것을 링크로 만들겠다.

대부분의 외부 연결에 관한 주요 문제는 IP 주소를 얻는 것이다. 어떤 인터넷 제공자는 케이블 또는 ADSL 가입자한테 정적인 IP 주소를 나누어 준다. 그 경우에 구성은 쉽다. 하지만, 대부분의 제공자들은 DHCP를 통한 동적인 구성으로 바꾸었다. 이것은 여러분의 리눅스 컴퓨터가 여러분의 eth1 인터페이스 상에서 DHCP 서버, 여러분의 eth0 인터페이스 상에서 DHCP 클라이언트가 되기 쉬울 것이라는 것을 의미한다.

Additionally, many providers have taken to providing their services in specialized non-standard ways which assume their customers will be using Windows. Some of those cases will be discussed at the end of section 3.3.2. 게다가, 많은 제공자들은 그들의 고객들이 윈도우즈를 사용 중일 것이라고 가정하는 특수화된 표준이 아닌 방식으로 서비스를 제공하는 것에 따르고 있다. 그런 경우들의 몇 가지는 섹션 3.3.2의 끝 부분에서 논의될 것이다.

정적인 IP를 가진 경우

만일 여러분의 인터넷 제공자가 여러분한테 정적인 IP 주소를 할당한다면 여러분은 유리한 처지에 있다. 먼저, 새로운 인터페이스 구성 파일을 생성하고, /etc/sysconfig/network-scripts/ifcfg-eth0, 다음을 그 안에 넣는다.

DEVICE=eth0
IPADDR=x.x.x.x
NETMASK=y.y.y.y
ONBOOT=yes
 

여러분의 인터넷 제공자에 의해 주어진 값으로 x.x.x.x와 y.y.y.y를 채우기만 한다. 이제 /etc/resolv.conf 파일을 편집하여 다음 정보를 입력한다.

search provider_domain_here
nameserver n.n.n.n
nameserver m.m.m.m
 

provider_domain은 인터넷 제공자에 의해 공급되어야 한다. 또한, 주 DNS 서버와 보조 DNS 서버를 n.n.n.n과 m.m.m.m 행에 입력한다. 만일 여러분이 리눅스 박스를 DNS 서버로 설정하였다면 다른 네임서버 기입사항 이전에 하나의 행을 추가한다: nameserver 127.0.0.1. 이것은 외부 서버한테 DNS 정보를 요청하기 전에 여러분의 리눅스 서버가 캐슁 서버를 사용하도록 한다.

DHCP를 사용하는 경우

만일 인터넷 제공자가 DHCP 구성을 사용한다면, 새로운 인터페이스 구성 파일을 생성하고, /etc/sysconfig/network-scripts/ifcfg-eth0, 다음을 그 안에 넣어 둘 필요가 있다:

DEVICE=eth0 
BOOTPROTO=dhcp 
ONBOOT=yes
 

이제 dhcpcd 클라이언트 데몬이 여러분의 시스템에 설치되었는지 확인한다. 리눅스 CD로 가서 dhcpcd RPM 패키지를 설치한다.

여러분의 새로운 네트워크 구성을 시험할 때이다. /etc/rc.d/init.d/network restart 명령을 사용하기만 하라. 이제 ping을 사용하여 여러분의 외부 연결을 시험하라. www.yahoo.com과 같은 인터넷 상의 컴퓨터를 핑(ping) 하고 어떤 것이 되돌아 오는지 보아라.

기발함과 예외들

여러분의 상황은 위에서 기술된 매우 간단한 상황과는 다를지 모른다. 여기에 가지각색의 차이에 관한 몇 가지 간결한 견해와 좀 더 믿을만한 자원이 있다. 링크와 이 섹션을 추가하도록 자극을 제공한 데 대해 John Mellor한테 감사한다.

이더넷 상에서 PPP (PPPoE)

다수의 ADSL 제공자들(예를 들어, Bell Atlantic)은 새로운 고객은 " PPP over Ethernet" 프로토콜 (PPPoE)을 사용하여 서비스에 연결하여야 한다고 강조하고 있다. 이 목적을 위해 그들은 윈도우즈 클라이언트 프로그램을 제공하지만, 리눅스 사용자들한테는 그다지 유용하지 못하다. 다행스럽게도, PPoE는 간단한 프로토콜이고, 리눅스 하에서도 지원하기 위해 다수의 노력이 진행 중에 있다.

바보같은 DHCP 트릭

네트워크 제공자가 행하는, 특히 좋아하는 트릭들 중 하나는 여러분의 서비스를 고유한 호스트 명칭, 또는 심지어 고유한 네트워크 카드에 연관시키는 것이다. 이것은 허브를 사용하여 여러 대의 컴퓨터가 여러분의 이더넷 포트 내로 꽂는 것으로부터 여러분을 그럴 듯하게 보호한다. (물론, 여러분은 리눅스와 매스커레이딩을 사용함으로써 더 나은 보안을 가지는 동일한 효과를 얻게 될 것이고 케이블 회사는 어떤 방법으로도 알지 못한다!)

만일 제공자가 여러분한테 호스트 명칭을 부여하고 그들의 서비스를 사용하기 위해 여러분의 윈도우즈 박스를 그 명칭으로 설정할 것을 강조한다면, 여러분은 DHCP 서버로부터 주소를 요청할 때 여러분의 리눅스 박스가 그 호스트 명칭으로 전송하는지 확인하여야 할 것이다.

인터페이스 구성 파일에서 BOOTPROTO를 dhcp에 지정할 때 레드햇 DHCP 클라이언트가 호출된다. 그러나 호스트 명칭에 참조하지 않고 호출된다. 호스트 명칭을 사용하여 프로그램을 호출하기 위해서, 레드햇 6.1에서, /etc/sysconfig/network 파일을 편집하여 다음 행을 변경하라:

HOSTNAME=

이를 판독하려면:

HOSTNAME=your_isp_assigned_name

이것은 레드햇 변종의 어떤 것에서는 작동하지 않을 지도 모른다. 만일 작동하지 않으면, /sbin/ifup 스크립트를 점검하고 dhcpcd와 pump를 호출이 -h $HOSTNAME 스위치를 포함하는지 보라. 만일 그렇지 않으면, 그것들을 추가하라. 그래서 호출은 /sbin/dhcpcd -i $DEVICE -h $HOSTNAME/sbin/pump -i $DEVICE -h $HOSTNAME과 같다.

Road Runner

Road Runner 케이블 서비스는 서버가 사용될 수 있기 전에 반드시 실행되어야 하는 특수한 로그인 처리를 가진다. 다행스럽게도, 상세한 Linux Road Runner HOWTO가 이용 가능하다.

네트워크 엔트리를 보기

이제 여러분의 작품에 감탄할지 모르겠다. 모든 구성된 장치를 보기 위해 ifconfig을 입력하라. 나의 게이트웨이 컴퓨터에서 이와 같이 보인다:

eth0  Link encap:Ethernet  HWaddr 00:60:67:4A:02:0A 
      inet addr:24.65.182.43  Bcast:24.65.182.255  Mask:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1 
      RX packets:487167 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:467064 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:89 txqueuelen:100 
      Interrupt:10 Base address:0xe400
eth1  Link encap:Ethernet  HWaddr 00:80:C8:D3:30:2C 
      inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0 
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1 
      RX packets:284112 errors:0 dropped:0 overruns:0 frame:1 
      TX packets:311533 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:37938 txqueuelen:100 
      Interrupt:5 Base address:0xe800
lo    Link encap:Local Loopback 
      inet addr:127.0.0.1  Mask:255.0.0.0 
      UP LOOPBACK RUNNING  MTU:3924  Metric:1 
      RX packets:12598 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:12598 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:0
 

eth0 인터페이스는 색다른 외부의 IP 주소를 가지고, eth1 주소는 개인용 내부 주소를 가진다.

route 명령을 입력함으로써 네트워크 라우터를 볼 수 있다. 나의 게이트웨이 컴퓨터에서 이와 같이 보인다:

  Kernel IP routing table 
  Destination     Gateway      Genmask         Flags Metric Ref Use Iface 
  255.255.255.255 *            255.255.255.255 UH    0      0     0 eth1 
  192.168.1.0     *            255.255.255.0   U     0      0     0 eth1 
  24.65.182.0     *            255.255.255.0   U     0      0     0 eth0 
  127.0.0.0       *            255.0.0.0       U     0      0     0 lo 
  default         24.65.182.1  0.0.0.0         UG    0      0     0 eth0
 

여기서 외부 네트워크가 설정된 것을, 내부 네트워크가 설정된 것을, 로컬 장치가 설정된 것을, 특정한 255.255.255.255 브로드캐스트 주소가 설정된 것을, 기본 라우터가 인터넷 제공자 게이트웨이를 가리키도록 설정된 것을 볼 수 있다. 완벽하다!

이제 여러분은 외부 네트워크와 내부 네트워크를 가진다. 남은 전부는 둘 사이를 개통하는 것이다. 그렇지만, 먼저 어떤 괴물도 외부로부터 들어올 수 없어야 한다는 것을 확인한다.

3.4 보안

ADSL 또는 케이블을 경유해 인터넷에 영구적으로 연결되는 것의 결점 중의 하나는 여러분의 컴퓨터가 일 주일 7 일간, 하루 24 시간 내내 잠재적인 보안 위협에 노출되어 있다는 것이다. 리눅스를 게이트웨이로 사용하는 것은 모든 다른 컴퓨터를 감추기 때문에 위험을 감소시킨다. 그 밖의 인터넷에 관한 한, 단지 여러분의 리눅스 박스만이 연결을 위해 사용 가능하다. 그래서, 이 시점에서, 여러분의 박스를 보다 더 안전하게 만들기 위한 기본적인 팁을 두 서너 개 알려 줄 것이다.

먼저, 모든 나쁜 놈들을 차단할 필요가 있다. 이것을 하기 위해 /etc/hosts.deny 파일을 편집하여 이와 똑같은지 확인하라:

# 
# hosts.deny  This file describes the names of the hosts which are 
#             *not* allowed to use the local INET services, as decided 
#             by the '/usr/sbin/tcpd' server. 
# 
#            The portmap line is redundant, but it is left to remind you that 
#        the new secure portmap uses hosts.deny and hosts.allow. In particular 
#             you should know that NFS uses portmap! 
ALL: ALL 
 

이것은 -- 들어오는 연결의 95%를 제어하는 -- "TCP wrappers"한테 모든 호스트로부터의 모든 연결을 거부하도록 알린다. 그것은 매우 훌륭한 규칙이다! 그러나 그것은 여러분이 내부의 가정용 네트워크로부터 리눅스 박스에 연결되는 것도 역시 막게 될 것이다. 이는 곤혹스럽다. 그래서, 한 가지 예외를 만들 것이다. /etc/hosts.allow 파일을 편집하여 이와 똑같은지 확인하라:

# 
# hosts.allow  This file describes the names of the hosts which are 
#              allowed to use the local INET services, as decided 
#              by the '/usr/sbin/tcpd' server. 
# 
ALL: 127.0.0.1 
ALL: 192.168.1.
 

This tells the "TCP wrappers" that they can allow connections to all services from the local device (127.0.0.1) and from your home network (192.168.1.). 이것은 "TCP wrappers"한테 로컬 장치(127.0.0.1)로부터 그리고 여러분의 가정용 네트워크(192.168.1.)로부터 모든 서비스에 연결을 허용할 수 있다는 것을 알린다.

강력한 맹꽁이 자물쇠를 사용하여 여러분은 이제 외부의 괴물을 막았다. 만일 여러분이 가로 빗장과 경보 시스템을 갖추기를 원한다면, 훨씬 더 많은 지식이 있어야 할 것이다. 만일 여러분이 안전한 리눅스 박스에 대해 더 많이 배우기를 원하면 Security HOWTO는 시작하기에 좋은 곳이다.


다음 이전 차례