Я не знаком с CentOS, и мне нужна помощь в маршрутизации для этого. У меня есть коробка CentOS с 3 сетевыми картами.
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, а затем сможет ответить, используя обратный маршрут. Мое плохое за то, что здесь не совсем ясно.
Вы не сможете сделать это с помощью стандартных сетевых API.
Сетевой стек Linux использует так называемые модель слабого хоста, что, в частности, подразумевает, что любой адрес, назначенный локальному интерфейсу, считается локальным. Если вы попытаетесь отправить пакет на локальный интерфейс, он будет зацикливаться локально и никогда не попадет в сеть.
Хотя вы, вероятно, могли бы что-то взломать, используя сырые сокеты, лучшим решением, скорее всего, будет использование второго хоста, возможно, реализованного как виртуальная машина.
Изменить /etc/sysctl.conf
и включите маршрутизацию ipv4.
net.ipv4.ip_forward = 1
Тогда беги sysctl -p
чтобы применить настройки.
Чтобы показать текущее значение net.ipv4.ip_forward
, используйте:
sysctl net.ipv4.ip_forward