Как позволить передать данных между двумя локальными интерфейсами?

Я установил Ubuntu 11.10 на обновленной машине. Я также заменил дефектную плату NIC новой платой NIC, две платы NIC распознаны, когда установка происходит. Мне также установили сквид как прокси-сервер. Сквид работает хорошо, когда все рабочие станции подключены к маршрутизатору. Однако....

Когда я подключаю один NIC к своему маршрутизатору (живое доступное интернет-соединение), другой NIC к моему переключателю (без любого доступного Интернета), я могу создать две отдельных сети, но я не могу выяснить, как заставить эти две платы NIC передать данные между собой, а также, через эти две сети.

  1. Я попытался соединить обе платы Ethernet мостом... никакая удача!
  2. Я попытался обновить iptables... никакая удача!
  3. Я установил обе платы NIC на статические адреса... никакая удача!
  4. Я настроил один NIC для использования другого в качестве шлюза... никакая удача! Весь результат по ошибке, что проверенный с помощью ping-запросов адрес (сеть, связанная с переключателем), находится на недостижимом месте назначения.

Что я пропускаю?

3
задан 14 January 2012 в 22:16

3 ответа

Ubuntu имеет IP fowarding отключенный по умолчанию, и необходимо позволить этому направить пакеты с машиной:

для включения введите в терминале как корень (sudo su):

echo 1 > /proc/sys/net/ipv4/ip_forward

Obs: не работает с sudo

И если Вы хотите направить Интернет от этой машины, Вы, возможно, должны настроить NAT также.

Править:

1-я команда echo 1 ... не работает с sudo. Необходимо измениться на корень с sudo su прежде (потому что sudo выполнит эхо 1 как корень, но попытается перенаправить в файл как, Ваш пользователь и это не будет работать). Так или иначе всегда можно проверять, существует ли 1 с cat /proc/sys/net/ipv4/ip_forward. Obs: это должно быть сделано на каждой начальной загрузке, таким образом, можно записать сценарий и использовать обновление-rc.d на нем.

POSTROUTING управляют взглядами хорошо, если eth0 является Вашим интернет-соединением NIC.

ПЕРЕДАЙТЕ правила, которые я использую для установленных и связанных соединений:

-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT

2-е ОБНОВЛЕНИЕ - Автоматический сценарий:

#!/bin/sh
# turn ip_forward on/off

case "$1" in
'start')
        echo 1 > /proc/sys/net/ipv4/ip_forward
        ;;
'stop')
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

Вы сохраняете этот сценарий в /etc/init.d с именем Вы хотите (router например), и Вы делаете это исполняемым файлом (sudo chmod +x /etc/init.d/router).

Чтобы иметь его работает на каждой перезагрузке, которую необходимо сделать, запускают ссылки с обновлением-rc.d:

sudo update-rc.d router defaults

Другие вещи необходимо проверить:

  • DHCP, работающий над 2-й сетью и отправляющий Ваш IP машины как шлюз по умолчанию к подсети
  • шлюз по умолчанию (Ваш IP машины в новой подсети) лучше с фиксированным IP
  • Вы прокомментировали, что не можете проверить с помощью ping-запросов 2-й NIC, но от где? подсеть, Ваша машина или машины, подключенные непосредственно на маршрутизаторе?
  • сквид установлен на Вашей машине? Вы изменяли конфигурацию для включения новой подсети? Вам нужен сквид? Не очень легко настроить, и можно очень хорошо совместно использовать Интернет и сеть без него, если Вам не нужны ее дополнительные функции.

Obs: сообщение обновления-rc.d в порядке, без проблем с ним. У Вас должен теперь всегда быть 1 в ip_forward файле.

4
ответ дан 1 December 2019 в 13:14

Сценарий, описанный @laurent, является ненужным, потому что существует канонический путь. Все, что необходимо сделать, отредактировать /etc/sysctl.conf и некомментарий (удаляют # в начале) эта строка:

net.ipv4.ip_forward = 1

Затем это будет уже применено при начальной загрузке.

5
ответ дан 1 December 2019 в 13:14

Я попробовал этот совет и столкнулся с проблемой, которая не покрыта здесь: следующий компьютер должен знать, как возвратиться к последнему компьютеру.

В моем случае у меня есть 2 сети: сеть WiFi, 192.168.1.0/24, и сеть Ethernet, 192.168.40.0/24. Мой "маршрутизатор" является ноутбуком и с приемопередатчиком WiFi на 192.168.1.0/24 и с интерфейсом Ethernet в 192.168.40.0/24 сети. Домашний маршрутизатор также имеет приемопередатчик WiFi и интерфейс Ethernet, но этот приемопередатчик Ethernet подключения к Интернету. Домашний маршрутизатор также имеет Преобразователь сетевых адресов (NAT). Домашний маршрутизатор имеет таблицу маршрутизации, и та таблица маршрутизации имеет запись маршрута по умолчанию, которая обычно указывает на Интернет-провайдеров на маршрутизатор (ISP).

Когда компьютер в 192.168.40.0/24 сети хотел отправить пакет на некоторый компьютер в Интернете, это консультировалось со своей собственной таблицей маршрутизации и знало, что шлюз по умолчанию был ноутбуком, 192.168.40.1. Когда пакет прибыл в ноутбук, он консультировался со своей собственной таблицей маршрутизации и передал пакет к домашнему маршрутизатору. Домашний маршрутизатор консультировался со своей таблицей маршрутизации, прошел Преобразование сетевых адресов (деталь, которую мы можем проигнорировать для этого обсуждения), и затем к маршрутизатору ISP. В какой-то момент целевая машина захочет отправить пакет на мой компьютер. Пакет прибудет в домашний маршрутизатор, пройдет обратный NAT и затем иметь, чтобы быть направленным. Когда пакет выйдет из NAT, он будет иметь целевой адрес IPv4 в 192.168.40.0/24 сети. Именно в этой точке я столкнулся с проблемой: домашний маршрутизатор не знал о сети Ethernet, 192.168.40.0/24. Таким образом, это сделало то, что это, как предполагается, делает - передают тот пакет к его маршрутизатору по умолчанию, т.е. маршрутизатору ISP.

Для разрешения проблемы я должен был сделать запись в таблице маршрутизации домашнего маршрутизатора, которая говорит ей, что для получения до любого компьютера в 192.168.40.0/24 сети отправьте пакет в адрес WiFi ноутбука, который находится в 192.168.1.0/24. Теперь, когда пакет прибывает в ноутбук, ноутбук знает о 192.168.40.0/24 сети и направляет пакет там.

0
ответ дан 1 December 2019 в 13:14

Другие вопросы по тегам:

Похожие вопросы: