Шлюз и роутер на одном компьютере

Мы пытались установить окно Linux/BSD/etc, которое может работать как в качестве интернет-шлюза, так и в качестве маршрутизатора. Я не знаю, как сформулировать нашу ситуацию очень хорошо, поэтому, пожалуйста, прости меня...

В настоящее время мы используем Vyatta со следующими сетевыми интерфейсами (с замаскированными IP-адресами):

  • eth0 -> xxx178/30 - WAN (восходящий маршрутизатор: xxx177)
    • vlan100 -> Прикреплено к eth0
  • br100 -> yyy1 - Мосты eth0.vlan100 и eth1
  • eth1 -> yyyy/24 - соединен с WAN (xxx178 является восходящим маршрутизатором для этой подсети)
  • eth2 -> 10.10.0.1/16 - Частная сеть, NAT через yyy1

Проблема: когда мы устанавливаем правило NAT для маршрутизации трафика 10.10.0.0/16 через br100 ничего не разбирается. Однако, если мы установим правило NAT для маршрутизации через eth0, трафик фактически маршрутизируется, но теперь он исходит от адреса xxx178 вместо адреса yyy1.

Что я здесь не так делаю? Любые мысли или предложения будут полезны.


Текущая конфигурация (без пуха):

interfaces {
    bridge br100 {
        address y.y.y.1/24
    }
    ethernet eth0 {
        address x.x.x.178/30
        vif 100 {
            bridge-group {
                bridge br100
            }
        }
    }
    ethernet eth1 {
        bridge-group {
            bridge br100
        }
    }
    ethernet eth2 {
        address 10.10.0.1/16
    }
    loopback lo {
    }
}
services {
    nat {
        rule 1 {
            outbound-interface br100
            source {
                address 10.10.0.0/16
            }
            type masquerade
        }
    }
}
system {
    gateway-address x.x.x.177
}

3 ответа

Решение

Мы смогли решить эту проблему, изменив правило NAT на SNAT вместо маскарада.

В большинстве дистрибутивов, если они не настроены для использования в качестве маршрутизаторов, они по умолчанию будут вести себя как отказ от пересылки IP-трафика. Обычно я использую пакетный протектор (linux, работающий на домашнем роутере asus) для такой работы. Но вы можете проверить настройки в /etc/sysctl.conf.

Ищите "net.ipv4.ip_forward =", если вы хотите пересылать трафик, это значение должно быть установлено на 1 (если нет, то "0"). Изменение файла приведет к сохранению изменений при перезагрузке и начнется при запуске сетевых служб.

Я бы порекомендовал вам использовать pfSense.

У него действительно хороший веб-интерфейс.

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