Я не знаком с CentOS и мне нужна помощь в маршрутизации. У меня есть CentOS box с 3 NIC.
eth0 Link encap:Ethernet
inet addr:10.50.121.16 Bcast:10.50.121.255 Mask:255.255.255.0
eth1 Link encap:Ethernet
inet addr:10.50.128.134 Bcast:10.50.128.255 Mask:255.255.255.0
eth2 Link encap:Ethernet
inet addr:10.50.140.97 Bcast:10.50.140.255 Mask:255.255.255.0
eth0 был существующим интерфейсом и у него есть маршрут по умолчанию, я добавил eth1 и eth2. На сегментах eth1 и eth2 есть шлюзы (адрес .1 на обоих). Мне нужно иметь несколько сетевых потоков между сетевыми картами eth1 и eth2 (через их соответствующие шлюзы) для проведения некоторого тестирования. Так что, полагаю, мне нужно настроить маршрутизацию политики для этого?
Редактировать: Извините за ясность, я не говорю, что пытаюсь маршрутизировать пакеты между двумя новыми интерфейсами. Мне нужно отправить несколько пакетов с IP eth1 на IP eth2 через некоторую инфраструктуру (таким образом имитируя разговор между vlan eth1 и vlan eth2). Поэтому я хочу сделать это eth1 -> eth1-vlan-router -> ??? -> eth2-vlan-router->eth2, а затем иметь возможность ответить, используя обратный маршрут. Моя вина, что я не совсем ясно выразился здесь.
решение1
Измените /etc/sysctl.conf
и включите маршрутизацию IPv4.
net.ipv4.ip_forward = 1
Затем запустите sysctl -p
, чтобы применить настройки.
Чтобы отобразить текущее значение net.ipv4.ip_forward
, используйте:
sysctl net.ipv4.ip_forward
решение2
Вы не сможете сделать это с помощью стандартных сетевых API.
Сетевой стек Linux использует так называемыймодель слабого хозяина, что подразумевает, в частности, что любой адрес, назначенный локальному интерфейсу, считается локальным. Если вы попытаетесь отправить пакет на локальный интерфейс, он будет зациклен локально и никогда не попадет в сеть.
Хотя вы, вероятно, и можете что-то сделать с помощью сырых сокетов, лучшим решением, скорее всего, будет использование второго хоста, возможно, реализованного в виде виртуальной машины.