Linux 서버를 라우터로 설정하는 방법

Linux 서버를 라우터로 설정하는 방법

동기 부여:

여러 가지 이유로 일반 무선 라우터 대신 Linux 서버를 사용하고 싶습니다.

  1. Linux에서 보다 완전한 서버를 설정하는 방법을 배우고 싶습니다.
  2. 모뎀, 라우터, 네트워크 스위치에 연결하고 싶지 않습니다.
  3. 라우터가 작동하지 않기 때문에 10일마다 라우터의 플러그를 뽑아야 하는 것에 지쳤습니다.
  4. 포트 포워딩이나 고정 IP 주소 지정(DHCP)과 같은 중요한 것이 빠졌다는 사실을 깨닫고 라우터를 구입하는 것에 지쳤습니다.

설정:

궁극적으로 연결은 모뎀으로 들어오고 를 통해 내 서버로 바로 연결되고 eth0다른 eth1모든 클라이언트 컴퓨터가 이더넷 케이블을 통해 연결되는 네트워크 스위치로 출력됩니다(당분간 무선은 잊어버리세요). 그러나 현재 저는 사무실 건물에 있고 모뎀으로 연결되고 라우터로 연결되고 네트워크 스위치로 연결되고 eth0위에 지정된 대로 연결됩니다.

현재 튜토리얼:

몇 가지 튜토리얼을 살펴보았습니다(우분투 튜토리얼가장 좋은 것입니다) 그리고 여기에서 라우터 질문 중 일부를 살펴보았습니다(예:이 하나) 그러나 다음과 같은 몇 가지 주요 개념을 모두 간과하고 있습니다.

  • eth1은(는) 무슨 관계 인가요 eth0? (일반적으로 실제 물리적 라우터 주소임) 로 사용하도록 /etc/network/interfaces알려주어야 합니까 ?eth1eth0network
  • eth1들어오는 인터넷을 가져와 eth0네트워크 스위치에서 원하는 사람에게 전달하도록 지시하기 위해 어떤 조치를 취해야 합니까 ?

현재 접근 방식:

/etc/network/interfaces서버에 있는 내 파일은 다음과 같습니다 .

iface lo inet loopback

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   # iface eth1 inet dhcp
   iface eth1 inet static
   address 192.168.7.0
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0

그리고 ifconfig두 NIC가 모두 잘 작동한다고 알려줍니다.

eth0      Link encap:Ethernet  HWaddr 20:cf:30:55:a0:5f  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::22cf:30ff:fe55:a05f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:948633 (948.6 KB)  TX bytes:1274685 (1.2 MB)

eth1      Link encap:Ethernet  HWaddr 00:11:95:f7:f4:6d  
          inet addr:192.168.7.0  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fef7:f46d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29934 (29.9 KB)  TX bytes:213055 (213.0 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:470737 (470.7 KB)  TX bytes:470737 (470.7 KB)

wlan0     Link encap:Ethernet  HWaddr bc:f6:85:f8:70:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

route -n returns그리고 서버에 있는 내용은 다음과 같습니다 .

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

그런 다음 클라이언트에서

auto lo
iface lo inet loopback
iface eth0 inet dhcp

그러나 IP 주소가 할당되지 않습니다.

편집하다:/etc/dhcp3/dhcpd.con다음은 내가 주로 복사한 isc-dhcp-server 구성 파일입니다.이 장소.

# Sample /etc/dhcpd.conf                                                                                                                                                  
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.7.0 netmask 255.255.255.0 {
   range 192.168.7.10 192.168.7.25;
}  

편집하다:출력sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

질문:

이 설정에서 어떤 중요한 단계/구성 요소가 누락되어 있습니까?

답변1

나는 당신이 가지고 있는 몇 가지 누락된 것들로 인해 잭 더 리퍼처럼 가야 합니다:

  1. 클라이언트가 DHCP를 사용하여 IP를 얻으려면 DHCP 서버가 필요합니다.

    iface eth0 inet dhcp

    클라이언트에서 이는 DHCP 서버에서 IP를 가져옴을 나타냅니다. DHCP 서버를 설정하지 않은 경우 고정 IP를 사용하거나 DHCP 서버를 설치해야 합니다.

  2. 클라이언트에 구성된 DNS 서버가 부족합니다. DHCP 서버가 부족하거나 모든 네트워크에 로컬 DNS 서버를 사용하고 싶을 수도 있습니다.

  3. iptables규칙(의 출력 )을 제공하지 않았지만 sudo iptables -L매스커레이드 규칙이나 IP 전달을 활성화하지 않은 것으로 추측할 수 있습니다.설명한대로.

  4. 의 IP 주소는 eth1권장되지 않습니다. 끝나는 모든 IP는 0일반적으로 네트워크 자체이며대부분의 라우터/방화벽은 이것을 사용할 때 혼란을 겪습니다.. 그것을로 변경 192.168.7.1하면 대부분 괜찮을 것입니다.

  5. broadcast인터페이스 의 값이 올바르지 eth1않습니다. 아무데도 패키지를 보내고 있지 않습니다. 올바른 값(인터페이스의 다른 값을 고려)은 입니다 192.168.7.255.

  6. DHCP 서버의 옵션은 악의적입니다. 라우터에 대한 ARP 패키지는 절대 도달하지 않습니다. 이것이 당신이 가져야 할 것입니다:

    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.7.255;
    option routers 192.168.7.1; ## This should be the same value of the step 4
    option domain-name-servers 8.8.8.8;
    
    subnet 192.168.7.0 netmask 255.255.255.0 {
        range 192.168.7.10 192.168.7.25;
    }

다음 사항을 따르면 라우터가 작동할 가능성이 높습니다.

답변2

Braiam은 내 질문에 답변했지만 여기에 철저한 연습을 추가하는 것이 도움이 될 것이라고 생각했습니다. 제가 실수한 것이 있으면 업데이트해 주세요.

먼저 두 개의 이더넷 카드(NIC)가 있는지 확인하고 /etc/network/interfaces다음과 같이 파일을 업데이트하십시오.~ 아니다이것을 /etc/networks파일로 착각합니다).

iface lo inet loopback                                                                                                                    

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   iface eth1 inet static
   address 192.168.7.1
   netmask 255.255.255.0
   broadcast 192.168.7.255
   network 192.168.1.0

gateway, broadcast및 을 찾으려면 network다음을 따르세요.이 지침.

다음으로 클라이언트로 이동하여 /etc/network/interface(다시,~ 아니다 /etc/networks) 먼저 정적 IP용 파일을 만들어 적어도 NIC 카드가 작동하는지 확인하세요.

iface eth0 inet static
address 192.168.7.75
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255
gateway 192.168.7.1

위의 값과 일치하도록 값을 변경하십시오. 작동한다면 좋습니다. 지침을 따르세요.여기하지만 그들을 따라가정확히, 파일이 여러 개 있으므로 dhcp폴더 등을 착각하지 /etc/dhcp마십시오 /etc/dhcp3.

관련 정보