Я установил Ubuntu 11.10 на обновленной машине. Я также заменил дефектную плату NIC новой платой NIC, две платы NIC распознаны, когда установка происходит. Мне также установили сквид как прокси-сервер. Сквид работает хорошо, когда все рабочие станции подключены к маршрутизатору. Однако....
Когда я подключаю один NIC к своему маршрутизатору (живое доступное интернет-соединение), другой NIC к моему переключателю (без любого доступного Интернета), я могу создать две отдельных сети, но я не могу выяснить, как заставить эти две платы NIC передать данные между собой, а также, через эти две сети.
Что я пропускаю?
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
#!/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
Obs: сообщение обновления-rc.d в порядке, без проблем с ним. У Вас должен теперь всегда быть 1 в ip_forward файле.
Сценарий, описанный @laurent, является ненужным, потому что существует канонический путь. Все, что необходимо сделать, отредактировать /etc/sysctl.conf
и некомментарий (удаляют #
в начале) эта строка:
net.ipv4.ip_forward = 1
Затем это будет уже применено при начальной загрузке.
Я попробовал этот совет и столкнулся с проблемой, которая не покрыта здесь: следующий компьютер должен знать, как возвратиться к последнему компьютеру.
В моем случае у меня есть 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 сети и направляет пакет там.