리눅스 서버를 라우터로 설정하는 방법


34

자극:

몇 가지 이유로 평균 무선 라우터 대신 Linux 서버를 사용하고 싶습니다.

  1. 리눅스에서 더 완벽한 서버를 설정하는 방법을 배우고 싶습니다.
  2. 모뎀, 라우터, 네트워크 스위치에 연결하고 싶지 않습니다.
  3. 라우터가 멈추기 때문에 10 일마다 라우터의 플러그를 뽑아야하는 것에 질려
  4. 포트 포워딩 또는 고정 IP 주소 지정 (dhcp)과 같은 중요한 항목이 없다는 것을 깨닫기 위해서만 라우터를 구입하는 데 지쳤습니다.

설정:

궁극적으로 연결은 모뎀을 통해을 통해 서버로 직접 연결 된 eth0다음 eth1네트워크 케이블로 출력되어 다른 모든 클라이언트 컴퓨터가 이더넷 케이블을 통해 연결됩니다 (현재는 무선 장치를 잊어 버립니다). 그러나 현재 사무실 건물에 있으며 모뎀으로 연결되어 라우터로 연결되고 네트워크 스위치 eth0로 연결되어 위에서 지정한대로 연결됩니다.

현재 튜토리얼 :

나는 몇 가지 튜토리얼을 보았고 ( 우분투 튜토리얼 이 가장 좋습니다) 여기서 라우터 질문 중 일부를 보았습니다 (예 : this one ).

  • eth1와의 관계 는 무엇입니까 eth0? 에서 /etc/network/interfaces내가 말할해야합니까 eth1사용하는 eth0(가)으로 network(일반적으로는 실제 물리적 라우터 주소)?
  • 네트워크 스위치에서 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         

의문:

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


어떤 dhcpd를 사용하고 있습니까?
TML

@TML 내 이해 dhcp(따라서 dhcpd)는 필수 사항은 아니며 모든 호스트 의 /etc/network/interfaces파일 을 변경하는 것이 아니라 서버의 모든 정적 IP를 중앙 집중화하기위한 것 입니다. 따라서 나는 이것이 효과가있을 때까지 실험하지 않기로 결정했다. 그러나 다음 과 같이 설치했습니다dhcp3-serverisc-dhcp-server
puk

클라이언트가 dhcp에서 IP 주소를 가져 오려면 dhcpd를 실행해야합니다. 이 dhcpd 중 어느 것이 현재 활성화되어 있는지에 대한 구성을 게시해야합니다. 문제의 원인은 클라이언트가 IP를 얻지 못하기 때문입니다. 개인적으로 dnsmasq를 추천합니다. 내부 DNS 확인을 수행하는 데 유용한 기능도 있습니다.
TML

@TML dhcpd.conf파일을 추가하고 사용 중임을 표시했습니다isc-dhcp-server
puk

1
다음 두 가지 사항을 더 고려해야합니다. 5. 장치를 부분적으로 만 제어하는 ​​데 지쳤습니다. 6. 백도어가있을 가능성이있는 라우터를 사용하는 데 지쳤습니다. 포인트 # 6은 현재 모든 라우터에서 가능합니다. 일부 라우터에는 하드 코딩 된 비밀번호 또는 일부 포트를 몰래 듣는 것과 같은 추가 기능이 제공됩니다.
Ignas2526

답변:


16

당신이 가진 몇 가지 누락 된 것들 때문에 리퍼 잭처럼 가야합니다.

  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. 인터페이스 의 broadcasteth1이 올바르지 않습니다. 패키지를 어디에도 보내지 않습니다. 인터페이스의 다른 값을 고려한 올바른 값은 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;
    }

이것들을 따르고 대부분의 경우 라우터가 작동하게 될 것입니다.


sudo iptables -L질문에 대한 출력 추가
puk

까다 롭지 않지만이 답변을 읽는 다른 사람의 이익을 위해이 dhcpd.conf 값 중 일부가 무엇인지 설명 할 수 있습니까? 라인 4 192.168.7.255및 라인 8subnet 192.168.7.0
puk

@puk는 설명에 설명하기에는 너무 복잡하지만 잘 설명하기 위해 .255일반적으로 사용되는 브로드 캐스트 주소입니다. 해당 방향으로 전송 된 모든 패키지는 동일한 서브넷의 모든 시스템에 전송됩니다. 1.2.3.255로 전송 된 모든 패키지는 IP가 1.2.3으로 시작하는 모든 시스템에 의해 수신됨을 의미합니다. 모든 패키지가 동일한 서브넷에 있기 때문에 en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

작동하지 않는. 문제가 문제인지 dhcp네트워크인지 확인하고 싶습니다 . 테스트 할 고정 IP 주소를 수행합니다. 클라이언트의 고정 IP eth1의 경우 IP 주소를 게이트웨이로 사용합니까?
puk

1
라우터 eth1의 브로드 캐스트와 네트워크가 192.168.7.x 대신 192.168.1.x를 가리키고 있기 때문일 수 있습니다. 라우터의 eth1에서 클라이언트의 eth0으로 통신 할 수없는 경우 DHCPACK은 클라이언트에 도달하지 않으며 결과적으로 IP를 얻지 못합니다.
TML

9

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, broadcastnetwork다음 이 지침을 .

그런 다음 클라이언트로 이동하여 정적 IP에 대한 /etc/network/interface(다시 아닌 /etc/networks ) 파일을 먼저 편집하여 최소한 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등등합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.