Назад | Перейти на главную страницу

Проблемы при настройке маршрутизатора Ubuntu / Linux

У меня есть Linux-система Ubuntu, которую я хочу превратить в маршрутизатор. Он имеет 2 сетевые карты и будет располагаться между i) кабельным модемом (Интернет) и ii) беспроводным маршрутизатором (обслуживающим внутреннюю сеть). С этой простой установкой я смог отойти на некоторое расстояние, но, похоже, внизу спотыкаюсь.

(the net) cable modem   ->  (eth3) ubuntu box (eth1)    ->  linksys wifi router 


[ok] dhcp-клиент ubuntu (использующий eth3) может подключаться к модему и просматривать Интернет
[ok] Ubuntu может статически назначить IP-адрес внутренней сетевой карте (eth1) с помощью команды:

sudo ifconfig eth1 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 

[ok] может установить и запустить DHCP-сервер. Клиентские машины могут получать IP-адреса и пинговать ubuntu.


После этого все начинает идти наперекосяк:

[x] через некоторое время ubuntu eth3 сохраняет свой IP-адрес, но больше не может подключаться к сети. Перезагрузка (снова вызов dhclient) возвращает меня в онлайн.

[x] ubuntu eth1 либо i) теряет IP-адрес 192.168.1.1, когда клиент запрашивает новую аренду IP, либо ii) ему назначается 192.168.1.100 (начало сетевого диапазона в '/etc/dhcp3/dhcpd.conf' - увидеть ниже). Как мне сохранить это значение на стабильном уровне?


/ и т.д. / по умолчанию / dhcp3-сервер

INTERFACES="eth1" 


/etc/dhcp3/dhcpd.conf

ddns-update-style none; 
log-facility local7; 
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option domain-name-servers 64.71.255.198;
  option domain-name "frye.com";
  option routers 192.168.1.1;
  option broadcast-address 192.168.0.255;
  default-lease-time 600;
  max-lease-time 7200;
}

[x] У меня проблемы с отправкой пакетов NAT для ubuntu box с клиентских машин (eth1) в сеть (eth3). Я попытался настроить таблицы с помощью приведенных ниже команд (я также попытался поменять местами сетевые адаптеры в командах). '/etc/sysctl.conf' (и соответствующий '/ proc / sys / net / ipv4 / ip_forward') имеют ожидаемое значение '1'. Какое правильное заклинание для пересылки пакетов от eth1 -> eth3?

sudo iptables --table nat --append POSTROUTING --out-interface eth3 -j MASQUERADE
sudo iptables --append FORWARD --in-interface eth1 -j ACCEPT



Я уверен, что в обоих этих моментах мне не хватает какой-то магии конфигурации.

Спасибо за любую помощь
Тим

Несколько случайных подсказок:

Не использовать ifconfig непосредственно для настройки сетевых адаптеров. Вместо этого поместите конфигурацию в /etc/network/interfaces, например:

auto lo
iface lo inet loopback

auto eth3
iface eth3 inet dhcp

auto eth1
iface eth1 inet static
    address 192.168.1.1
    netmask 255.255.255.0

Ваш /etc/dhcp3/dhcpd.conf похоже, есть опечатка в broadcast-address (должно быть 192.168.1.255).

Ваш iptables Правило MASQUERADE, вероятно, должно быть более конкретным. Это могут быть совпадающие пакеты, которые не следует использовать NAT. Я бы добавил исходное совпадение для внутренней сети, например:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth3 -j MASQUERADE

Ваше правило ACCEPT в цепочке FORWARD не требуется, при условии, что политика в цепочке FORWARD - ACCEPT (что по умолчанию).