動機:
我想使用我的 Linux 伺服器而不是普通的無線路由器有幾個原因
- 我想學習如何在linux上建立一個更完整的伺服器
- 我不想有調變解調器、連接到路由器、連接到網路交換機
- 我厭倦了每 10 天就必須拔掉路由器的插頭,因為它總是掛起
- 我厭倦了購買路由器卻發現它們缺少一些重要的東西,例如連接埠轉送或靜態 IP 位址 (dhcp)
設定:
最終,連接將進入調變解調器,並透過 直接進入我的伺服器eth0
,然後eth1
輸出到網路交換機,所有其他客戶端電腦將透過乙太網路線連接到該網路交換器(暫時忘記無線)。然而,目前我在一棟辦公大樓裡,連接進入數據機,數據機進入路由器,路由器進入網路交換機,然後進入eth0
如上所述的網路交換器。
目前教學:
我看了一些教學(Ubuntu教程是最好的),我在這裡查看了一些路由器問題(即。這個),但它們都掩蓋了幾個關鍵概念,例如:
- 有何
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 位址。
編輯:這是 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
我必須像開膛手傑克一樣去,因為你缺少一些東西:
如果您的用戶端將使用 DHCP 來取得 IP,則您需要 DHCP 伺服器。
iface eth0 inet dhcp
在用戶端中,這表示它們將從 DHCP 伺服器取得 IP,如果您沒有設定 DHCP 伺服器,則應使用固定 IP 或安裝 DHCP 伺服器。
您缺少在用戶端中設定的 DNS 伺服器。可能是由於缺少 DHCP 伺服器,或者您可能希望為所有網路使用本機 DNS 伺服器。
您沒有提供
iptables
規則( 的輸出sudo iptables -L
),但我可以猜測您沒有啟動偽裝規則,也沒有啟動 IP 轉發如上所述。eth1
不建議使用IP位址。任何以 IP 結尾的 IP0
通常都是網路本身,並且大多數路由器/防火牆在使用時都會感到困惑。將其更改為192.168.7.1
,您基本上會沒事的。您在介面
broadcast
中的值eth1
不正確。正在將包裹發送到任何地方。正確的值(考慮到介面的其他值)是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; }
按照這些操作,您的路由器很可能就能正常運作。
答案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
要找到您的gateway
和broadcast
,network
請遵循這些說明。
接下來,進入客戶端並編輯/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
。