如何設定Linux伺服器作為路由器

如何設定Linux伺服器作為路由器

動機:

我想使用我的 Linux 伺服器而不是普通的無線路由器有幾個原因

  1. 我想學習如何在linux上建立一個更完整的伺服器
  2. 我不想有調變解調器、連接到路由器、連接到網路交換機
  3. 我厭倦了每 10 天就必須拔掉路由器的插頭,因為它總是掛起
  4. 我厭倦了購買路由器卻發現它們缺少一些重要的東西,例如連接埠轉送或靜態 IP 位址 (dhcp)

設定:

最終,連接將進入調變解調器,並透過 直接進入我的伺服器eth0,然後eth1輸出到網路交換機,所有其他客戶端電腦將透過乙太網路線連接到該網路交換器(暫時忘記無線)。然而,目前我在一棟辦公大樓裡,連接進入數據機,數據機進入路由器,路由器進入網路交換機,然後進入eth0如上所述的網路交換器。

目前教學:

我看了一些教學(Ubuntu教程是最好的),我在這裡查看了一些路由器問題(即。這個),但它們都掩蓋了幾個關鍵概念,例如:

  • 有何eth1關係eth0?我是否/etc/network/interfaces必須告訴eth1用作(通常是實際的實體路由器位址)eth0network
  • 我是否需要做任何事情來指示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告訴我兩個網卡都工作正常:

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 位址。

編輯:這是 isc-dhcp-server 配置文件,/etc/dhcp3/dhcpd.con我主要從其中複製這個網站

# 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. eth1不建議使用IP位址。任何以 IP 結尾的 IP0通常都是網路本身,並且大多數路由器/防火牆在使用時都會感到困惑。將其更改為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

要找到您的gatewaybroadcastnetwork請遵循這些說明

接下來,進入客戶端並編輯/etc/network/interface(再次,不是 /etc/networks)檔案首先取得靜態IP,以確保至少網路卡運作正常。

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

相關內容