자, 지금까지 여러분은 게이트웨이 컴퓨터에 리눅스를 설치했다. 여러분은 네트워크 카드 중 하나를 구성했고, 인터넷에 접속을 설정했다. 그렇지만, 우리는 무에서부터 시작할 것이고 어떤 것도 전혀 구성되지 않았다고 가정할 것이다.
root
로서 로그인 하라. 이 문서에 나온 모든 지시는 여러분이 root로서 로그인 했다고 가정한다.
리눅스 커널은 두 장의 이더넷 카드를 eth0
와 eth1
로서 참조한다. 이제부터는
또한 그것들에 대해 언급하게 될 방법이 될 것이다. 애로 사항은, 어느 것이 어떤 것인지이다.
경우의 적어도 50%는 쓰이도록 보증한다면, 판별하는 "간단한" 방법이 있다. 마더보드를 가진
컴퓨터를 책상 위에 수평적으로 놓고 뒷 패널(back panel)을 여러분을 향하게 한다. (만일 여러분이
그걸 열고 그 위에서 무엇인가 하게 되는 것과 같이 하도록 한다.) 가장 왼편의 카드는 eth0
이다.
-- 여러분은 약간의 마스킹 테이프로 라벨을 붙이고자 할지 모른다. 지금, 종이 위에 eth0
와
eth1
둘 모두의 제조와 모델을 써 두어라.
자, eth0
와 eth1
이 커널에 의해 자동적으로 인식되는지 여부를 보자.
ifconfig eth0
와 ifconfig 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.
만일 카드를 둘 다 찾았으면 다음 섹션으로 넘어 가라. 아니면, 이 섹션을 읽어라.
자, 이미 아는 바와 같이 카드가 하나 혹은 둘 모두가 커널에 의해 인식되지 않는다. 실제로, 이것은 문제가 되지 않는다. 반드시 해야 할 것은 카드를 찾는 방법을 커널에 좀 더 명시적으로 알리는 것이다. 여기에는 우여곡절이 많고, 그 모두를 다루지는 않을 것이다. 현행의 것이 어려워질 때 Ethernet HOWTO로 바꾸어라. 여기에 몇 가지 요약된 조언이 있다.
/proc/pci
를 통해 해독하고
제조원과 모델을 적어 둠으로써 네트워크 카드(와 다른 것들)에 대해 많은 것을 종종 알수 있다.이제, 여러분은 eth0
와 eth1
의 제조원과 모델이 무엇인지 알기 때문에
Ethernet HOWTO의
compatibility 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
파일을 다음과 같이 펼쳐 보인다.
alias eth0 ne
)은 eth0
장치를 위한 ne 드라이버를 사용하도록 커널에 알린다.options ne io=0x300 irq=10
)은 ne 드라이버가 ISA 카드를 발견하게 될 IO 주소와
IRQ 인터럽트를 알린다. 만일 여러분이 ISA 카드를 가지고 있다면, 아마 이런 종류의 지시를 사용하여야
할 것이다. 여러분의 카드를 위한 정확한 정보를 사용하여 드라이버, IO와 IRQ 지시자를 교체하기만 하라.alias eth1 via-rhine
)은 eth1
를 위해 via-rhine 드라이버를 사용하도록
커널한테 알린다. 나의 eth1
카드가 PCI 카드이기 때문에 IO 또는 IRQ 정보를 제공할 필요가 없다:
PCI 부시스템은 장치를 자동적으로 구성한다.여러분은 두 개의 카드를 위해 conf.modules
에 alias 기재사항을 가진다는 것을 보장하고,
모든 ISA 카드를 위한 options 행을 정확하게 만들고자 할 것이다. 여러분은 설치하는 동안 여러분이
구성한 이더넷 카드를 위한 conf.modules
에 이미 여러 행들을 이미 가지고 있을지 모른다.
여러분이 conf.modules
을 편집하는 것을 완료하였을 때, ifconfig eth0
와 ifconfig
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
를 위한 것이다.
"내부 네트워크"는 여러분의 모든 가정/사무실 장비가 통하게 되는 네트워크이다. "외부 네트워크"는 리눅스 박스의 다른 쪽에 있는 대규모의 무시무시한 인터넷이다. 대체로, 내부 네트워크는 리눅스 박스에 의해 외부 네트워크로부터 완전히 격리될 것이다. 이는 중간 정도의 강력한 방화벽으로서 운용될 것이다.
여러분의 드라이버가 작동하고 있고 ifconfig
에서 eth0
와 eth1
를
둘 다 볼 수 있으므로 내부의 가정용 네트워크를 설정하여야 하는 때이다. 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 서버는 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 HOWTO는 Configuration Section에 클라이언트 구성에 관해 매우 상세한 정보를 가진다.
일반적으로, 클라이언트 컴퓨터를 구성하기 위해서 DHCP 구성을 가능케 하거나 192.168.1.1의 게이트웨이를 가지는 192.168.1.X 네트워크에서 주소를 수동으로 할당한다. 만일 여러분이 캐슁 DNS 서버(아래를 보라)를 구동하거나 DNS를 네트워크 제공자에 의해 할당된 주소로 돌린다면 DNS 서버는 둘 다 192.168.1.1이 되도록 한다.
리눅스 박스를 캐싱 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 개월을 지나는 동안 몇 가지 보안 문제를 안고 있었다. 그래서, 여러분은
가장 최신 버전을 구동하고 있어야 하고, 보안을 강화하기 위해 기본 설정에 몇 가지 변경을 가하는 것이
매우 중요하다.
bind
의 버전을 점검하고 적어도 8.2.2가 되는지 확인한다.
Red Hat Updates 또는
Mandrake Updates 사이트로 가서
가장 최신 버전을 점검하라. /etc/named.conf
파일에 forwarders
행 이후에
allow-query { 192.168.1/24; 127.0.0.1/32; };
행을 추가함으로써
로컬 네트워크만에 한해 여러분의 네임 서버에 접근을 제한하라.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
를 입력한다. 이는 패킷을 규칙적인 간격으로 여러분의 리눅스 컴퓨터로
송출하고 여러분의 리눅스 컴퓨터는 패킷을 되돌려 주게 될 것이다. 만일 제대로 작동 중이면,
한 벌의 패킷 회신을 수 차례 보아야 한다.
이제 기꺼이 외부 네트워크를 구성할 수 있다. 인터넷 제공자가 리눅스를 얼마나 제대로 지원하는지에 따라, 때때로 이것은 어려울 것이다. 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 주소를 할당한다면 여러분은
유리한 처지에 있다. 먼저, 새로운 인터페이스 구성 파일을 생성하고,
/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 구성을 사용한다면, 새로운 인터페이스 구성 파일을
생성하고, /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한테 감사한다.
다수의 ADSL 제공자들(예를 들어, Bell Atlantic)은 새로운 고객은 " PPP over Ethernet" 프로토콜 (PPPoE)을 사용하여 서비스에 연결하여야 한다고 강조하고 있다. 이 목적을 위해 그들은 윈도우즈 클라이언트 프로그램을 제공하지만, 리눅스 사용자들한테는 그다지 유용하지 못하다. 다행스럽게도, PPoE는 간단한 프로토콜이고, 리눅스 하에서도 지원하기 위해 다수의 노력이 진행 중에 있다.
네트워크 제공자가 행하는, 특히 좋아하는 트릭들 중 하나는 여러분의 서비스를 고유한 호스트 명칭, 또는 심지어 고유한 네트워크 카드에 연관시키는 것이다. 이것은 허브를 사용하여 여러 대의 컴퓨터가 여러분의 이더넷 포트 내로 꽂는 것으로부터 여러분을 그럴 듯하게 보호한다. (물론, 여러분은 리눅스와 매스커레이딩을 사용함으로써 더 나은 보안을 가지는 동일한 효과를 얻게 될 것이고 케이블 회사는 어떤 방법으로도 알지 못한다!)
만일 제공자가 여러분한테 호스트 명칭을 부여하고 그들의 서비스를 사용하기 위해 여러분의 윈도우즈 박스를 그 명칭으로 설정할 것을 강조한다면, 여러분은 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 케이블 서비스는 서버가 사용될 수 있기 전에 반드시 실행되어야 하는 특수한 로그인 처리를 가진다. 다행스럽게도, 상세한 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 브로드캐스트 주소가 설정된 것을, 기본 라우터가 인터넷 제공자 게이트웨이를 가리키도록 설정된 것을 볼 수 있다. 완벽하다!
이제 여러분은 외부 네트워크와 내부 네트워크를 가진다. 남은 전부는 둘 사이를 개통하는 것이다. 그렇지만, 먼저 어떤 괴물도 외부로부터 들어올 수 없어야 한다는 것을 확인한다.
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는 시작하기에 좋은 곳이다.