Мотивация:
Я хочу использовать свой Linux-сервер вместо обычного беспроводного маршрутизатора по нескольким причинам.
- Я хочу узнать, как настроить более полноценный сервер на Linux.
- Я не хочу иметь модем, подключенный к маршрутизатору, подключенный к сетевому коммутатору.
- Мне надоело отключать маршрутизатор каждые 10 дней, потому что он просто зависает.
- Мне надоело покупать маршрутизаторы, а потом обнаруживать, что в них отсутствует что-то важное, например, переадресация портов или статическая IP-адресация (DHCP).
Настраивать:
В конечном итоге соединение будет поступать в модем, а затем напрямую в мой сервер через eth0
, а затем eth1
будет выходить на сетевой коммутатор, к которому все остальные клиентские компьютеры будут подключаться через кабели Ethernet (забудьте на время о беспроводных сетях). В настоящее время, однако, я нахожусь в офисном здании, и у меня есть соединение, поступающее в модем, который идет в маршрутизатор, который идет в сетевой коммутатор, который затем идет в 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 инет dhcp
В клиентских компьютерах это означает, что они получат свои IP-адреса от DHCP-сервера. Если вы не настроили DHCP-сервер, вам следует либо использовать фиксированные IP-адреса, либо установить DHCP-сервер.
У вас нет настроенных DNS-серверов в клиентах. Либо из-за отсутствия DHCP-сервера, либо вы можете захотеть использовать локальный DNS-сервер для всей вашей сети.
Вы не предложили
iptables
правила (выводsudo iptables -L
), но я могу предположить, что вы не активировали правила Маскарада и переадресацию IP.как описано.IP-адрес
eth1
не рекомендуется. Любой IP, заканчивающийся на,0
как правило, является самой сетью, ибольшинство маршрутизаторов/брандмауэров просто путаются при их использовании. Измените его на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
и т. д.