问题描述
动机:
出于几个原因,我想使用我的linux服务器而不是普通的无线路由器
-
我想学习如何在linux上建立一个更完整的服务器
-
我不希望有连接到路由器的调制解调器连接到网络交换机
-
我厌倦了每10天不得不拔掉我的路由器,因为它只是挂起
-
我厌倦了购买路由器只是为了意识到他们遗漏了一些至关重要的东西,比如端口转发或静态IP寻址(dhcp)
建立:
最终,连接将进入调制解调器,并通过eth0
直接进入我的服务器,然后eth1
将输出到网络交换机,所有其他客户端计算机将通过以太网电缆连接(暂时忘记无线)。然而,目前我在办公楼里,我有连接进入调制解调器,进入路由器,进入网络交换机,然后进入eth0
,如上所述。
当前教程:
我查看了一些教程(Ubuntu tutorial是最好的),我在这里看了一些路由器问题(即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
告诉我两个网卡都正常工作:
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
题:
我在此设置中缺少哪些关键步骤/组件?
最佳解决办法
由于你有几件遗失的东西,我必须像开膛手杰克一样去:
-
如果您的客户端将使用DHCP获取IP,则需要DHCP服务器。如果你没有设置DHCP服
-
您缺少在客户端中配置的DNS服务器。由于缺少DHCP服务器,或者您可能希望为您的所有网络使用本地DNS服务器。
-
你没有提供
iptables
规则(sudo iptables -L
的输出),但我猜你没有激活化妆舞会规则,也没有激活IP转发as described。 -
建议不要使用
eth1
的IP地址。在0
中结束的任何IP通常是网络本身,以及most routers/firewall just get confused when these are used。将它更改为192.168.7.1
,你会很好。 -
eth1
接口中的broadcast
值不正确。发送包裹无处可去。正确的值(考虑到界面的其他值)是192.168.7.255
。 -
您在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
要找到您的gateway
,broadcast
和network
,请按照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
等。