Linux как маршрутизатор между тремя сетями (одна из которых — Интернет)

Linux как маршрутизатор между тремя сетями (одна из которых — Интернет)

У меня есть Linux-компьютер, который осуществляет маршрутизацию между двумя сетями XX3.0 и XX4.0. Я хочу, чтобы он мог подключать эти сети к Интернету.

я прочиталздесьна замечательный ответ @Kevin о том, что для этого мне нужно использовать NAT, что означает iptables; мой сервер сейчас не использует iptables, поэтому мне нужно найти правильную команду, чтобы включить это.

Мою сеть можно описать так: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 eth2 подключен к маршрутизатору напрямую.

Две локальные сети могут общаться друг с другом, но никто не может даже пинговать публичный IP-адрес. Я пытался прослушивать пакеты в маршрутизаторе, когда я отправляю команду ping на публичный IP-адрес на одной машине в сети .3.x, но насколько я могу судить, есть проблема, и она, похоже, связана с бесконечными ARP-запросами eth0 int о том, у кого IP-адрес 3.x. Похоже, мне нужно включить на маршрутизаторе поведение NAT. Я провел поиск и не смог выяснить правильную команду, которую мне нужно отправить с помощью iptables, хотя я пробовал команды, которые упоминалисьздесьиздесь. У меня была возможность маршрутизировать между двумя локальными сетями вообще без использования iptables, и поскольку он мне не нужен, я предпочитаю его не использовать, если только невозможно выполнить NAT без него (в этом случае я предпочитаю iptable любой другой программе).

подведем итог вопроса: 1. мне нужно, чтобы все три сети могли общаться друг с другом. 2. я предпочитаю не использовать iptables (если это возможно) или любую другую дополнительную программу. 3. Вот и все.

Спасибо.

решение1

Две локальные сети могут общаться друг с другом, значит у вас включен ip_forward. Если локальные сети не могут пинговать публичный IP-адрес, значит вам нужно сделать маскарадинг.

Вы можете пинговать публичный IP-адрес с этого linux-бокса? Если нет, то, должно быть, есть какая-то другая проблема. Возможно, вам нужно настроить маршрутизатор в режиме моста (это только предположение).

Я предполагаю, что ваша машина linux может пинговать публичный ip и есть публичный ip, настроенный на eth0. Таким образом, ваши внутренние сетевые машины не могут выходить в Интернет с частным ip-адресом, поэтому вам нужно сделать natting. Попробуйте использовать iptables, потому что это довольно просто.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Если у вас в системе не установлен iptables. По умолчанию должен быть установлен какой-то брандмауэр. Какой дистрибутив вы используете?

решение2

Частные IP-адреса не подходят для использования в Интернете и не могут быть маршрутизированы. Их можно использовать только локально.

Чтобы включить доступ в Интернет, вам нужно включить IP-пересылку, которая, судя по вашему описанию, выполняется. Во-вторых, вам нужно использовать NAT. В большинстве случаев ваш интернет-провайдер делает NAT для вас. Это может меняться в зависимости от типа подключения и назначенных IP-адресов.

Что касается инструмента, то я не думаю, что есть лучший инструмент, чем iptables, для выполнения этой задачи под Linux.

решение3

После некоторых исследований и рекомендаций от ваших людей я пришел к выводу, что iptable — лучший способ сделать NAT (маскировку), поэтому я сделал это следующим образом:

#Сбросить все текущие настройки iptables с помощью:

$>iptables -Fи $>iptables -t nat -F

Затем попробуйте выполнить ping между локальными сетями, он должен работать с настройками iptables по умолчанию, если нет, введите следующее:

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

Затем выполните команду, указанную выше от @Sachin Divekar (замените ethX на ваш интерфейс интернет-соединения):

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Тест, должно работать. Затем вы должны сохранить эти настройки с помощью:

$>iptables-save > /etc/sysconfig/iptables

Сделанный.

Связанный контент