У меня есть настольный ПК с операционной системой Windows в корпоративной локальной сети с двумя сетевыми картами, и я выбрал оба адаптера и связал их в настройках сети. У меня также есть ПК с Linux с двумя сетевыми картами, и я настроил первый для получения DHCP в корпоративной локальной сети, а второй - для статического IP в изолированной сети. Я изменил маршрут на ПК с Linux, чтобы трафик корпоративной локальной сети выходил на первый сетевой адаптер (eth0), а трафик в изолированную сеть - на второй (eth1). Так что я могу получить доступ к обеим сетям на ПК с Linux.

                  Windows               
            +-----------------+    
10.x.x.x <- | NIC1 -+         |                          Linux
            |       | bridged |              +----------------------------+
            | NIC2 -+         |<-->switch<-->| NIC1 (DHCP 10.x.x.x)       |
            +-----------------+              |                            |
                                             | NIC2 (static 192.168.1.50) |<----> 192.168.1.x
                                             +----------------------------+

Но мне нужно получить доступ к веб-серверу в локальной сети 192.168.1.x с ПК с Windows, и я застрял. У меня установлена Windows для соединения, так что она работает как обычный коммутатор. Я добавил маршрут в Windows для пересылки трафика 192.168.1.x в Linux NIC1. Используя tethereal, я вижу, что Linux NIC1 получает пакеты http из коробки Windows на NIC1.

Теперь, как мне перенаправить этот трафик на NIC2, чтобы он продолжал идти в сеть 192.168.1.x и мог получать ответы? Я думаю, что мне нужно превратить linux box в роутер. Поэтому я попытался добавить некоторые правила iptables:

 Chain INPUT (policy ACCEPT)
 target    prot opt source               destination
 ACCEPT    all  --  10.6.100.0/22        192.168.1.0/24
 ACCEPT    all  --  192.168.1.0/24       10.6.100.0/22

 Chain FORWARD (policy ACCEPT)
 target    prot opt source               destination
 ACCEPT    all  --  10.6.100.0/22        192.168.1.0/24   // (-o eth1)
 ACCEPT    all  --  192.168.1.0/24       10.6.100.0/22    // (-o eth0)

 Chain OUTPUT (policy ACCEPT)
 target    prot opt source               destination

Я предполагаю, что сделал что-то не так, потому что когда я запускаю iptables с --verbose, я не вижу, чтобы ни политика INPUT, ни FORWARD не обрабатывали какие-либо пакеты.

Я также включил беспорядочный режим на eth0 и eth1 с помощью ipconfig.

Я бы хотел, чтобы это работало с существующим оборудованием и топологией. ПК с Windows находится там, где он есть, потому что он мне нужен, чтобы прослушивать трафик, входящий и выходящий из изолированной сети, для отладки оборудования.

Как я могу заставить это работать так, как я хочу?

1 ответ1

1

Я полагаю, вы забыли активировать IP-пересылку в окне Linux. Вы можете проверить это, выполнив команду

cat /proc/sys/net/ipv4/ip_forward

если это дает вам «0», IP-переадресация отключена. чтобы включить это, выполните эту команду:

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

обратите внимание, что это будет продолжаться только до следующей перезагрузки. как сделать это постоянным, зависит от распределения. В большинстве дистрибутивов есть файл /etc/sysctl.conf. если этот файл существует, откройте его с помощью vi и проверьте строку

net.ipv4.ip_forward = 0

измените 0 на 1, и, скорее всего, он включит переадресацию ip при следующей загрузке машины. Обязательно проверьте после перезагрузки.

примечание о ваших iptables: цепочки имеют следующее значение:

  • INPUT получает пакеты, предназначенные для самого Linux-бокса (поэтому он не будет видеть пакеты, которые Linux-бокс направляет вперед
  • FORWARD получает пакеты через блок Linux на другие системы, поэтому не видит пакетов, предназначенных для самого блока Linux
  • OUTPUT передается только пакетами, которые исходят из самого linux box (например, сгенерированы из локально запущенного процесса, такого как команда ping или тому подобное)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .