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

动机:

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

  1. 我想学习如何在linux上设置更完整的服务器
  2. 我不希望有连接到路由器的调制解调器,连接到网络交换机
  3. 我厌倦了每10天不得不拔掉我的路由器,因为它只是挂起
  4. 我厌倦了购买路由器只是为了意识到他们遗漏了一些至关重要的东西,比如端口转发或静态IP寻址(dhcp)

建立:

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

目前的教程:

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

  • 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配置文件,我主要是从这个站点复制的。

 # 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服务器。

    iface eth0 inet dhcp

    在客户端中,这表示他们将从DHCP服务器获取IP,如果您没有设置DHCP服务器,则应使用固定IP或安装DHCP服务器。

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

  3. 你没有提供iptables规则( sudo iptables -L的输出),但我猜你没有激活Masquerade规则,也没有像所描述的那样激活IP转发。

  4. 不建议使用eth1的IP地址。 以0结尾的任何IP通常都是网络本身,并且大多数路由器/防火墙在使用它们时会感到困惑 。 将它更改为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 ,请按照以下说明操作 。

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