У меня есть 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
Сделанный.