当前位置: 首页>>技术问答>>正文


如何将linux服务器设置为路由器

,

问题描述

动机:

出于几个原因,我想使用我的linux服务器而不是普通的无线路由器

  1. 我想学习如何在linux上建立一个更完整的服务器

  2. 我不希望有连接到路由器的调制解调器连接到网络交换机

  3. 我厌倦了每10天不得不拔掉我的路由器,因为它只是挂起

  4. 我厌倦了购买路由器只是为了意识到他们遗漏了一些至关重要的东西,比如端口转发或静态IP寻址(dhcp)

建立:

最终,连接将进入调制解调器,并通过eth0直接进入我的服务器,然后eth1将输出到网络交换机,所有其他客户端计算机将通过以太网电缆连接(暂时忘记无线)。然而,目前我在办公楼里,我有连接进入调制解调器,进入路由器,进入网络交换机,然后进入eth0,如上所述。

当前教程:

我查看了一些教程(Ubuntu tutorial是最好的),我在这里看了一些路由器问题(即this one),但它们都掩盖了几个关键概念,如:

  • 什么是eth1eth0的关系?在/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告诉我两个网卡都正常工作:

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配置文件,我主要从this site复制。

# 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. 如果您的客户端将使用DHCP获取IP,则需要DHCP服务器。如果你没有设置DHCP服

  2. 您缺少在客户端中配置的DNS服务器。由于缺少DHCP服务器,或者您可能希望为您的所有网络使用本地DNS服务器。

  3. 你没有提供iptables规则(sudo iptables -L的输出),但我猜你没有激活化妆舞会规则,也没有激活IP转发as described

  4. 建议不要使用eth1的IP地址。在0中结束的任何IP通常是网络本身,以及most routers/firewall just get confused when these are used。将它更改为192.168.7.1,你会很好。

  5. eth1接口中的broadcast值不正确。发送包裹无处可去。正确的值(考虑到界面的其他值)是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;
    }

按照这些,你很可能会让你的路由器工作。

次佳解决办法

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,请按照these instructions进行操作。

接下来,进入客户端并首先编辑静态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

更改值以匹配上述值。如果它工作,很好,然后使用说明here但完全按照它们,因为有几个dhcp文件,所以不要错误文件夹/etc/dhcp/etc/dhcp3等。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6412.html,未经允许,请勿转载。