Не могли бы вы поделиться своим опытом в понимании того, как настроить разделение сетевого трафика на двух сетевых интерфейсах?
Как я понимаю, статические маршруты используются для сетевого трафика, который не предназначен для использования шлюза по умолчанию. Шлюз по умолчанию используется для всего трафика, который не предназначен для локальной сети и для которого в таблице маршрутизации не указан предпочтительный маршрут.
Сценарий таков.
- Каждый компьютер в сети имеет две сетевые карты.
- Производственный интерфейс для каждого -
eth0
(GW = 10.10.10.1). - Интерфейс управления для каждого из них
eth1
(GW = 192.168.100.1). - Производство и управление трафиком должны быть полностью разделены.
Ниже я написал, что я попробовал с Debian Wheezy. И моя проблема в том, что, хотя у меня есть хосты, настроенные таким образом, что они взаимодействуют на обоих интерфейсах, отдельные хосты, похоже, «слышат» трафик на неправильном интерфейсе. Например:
Host 140
eth0 Link encap:Ethernet HWaddr 08:00:27:d1:b6:8f
inet addr:10.10.10.140 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:641481 (626.4 KiB) TX bytes:241124 (235.4 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:ad:14:b6
inet addr:192.168.100.140 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:602485 (588.3 KiB) TX bytes:1022906 (998.9 KiB)
От хоста 140, я выполнить эту команду: tcpdump -i eth0
. В отдельном сеансе на хосте 140 я выполняю ping 192.168.100.50
.
19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64
Почему я вижу вышеупомянутый вывод eth0
? Я думаю, что я должен видеть трафик только 10.10.10.140. Я также вижу это eth1
, как и ожидалось:
19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64
Если я пинг с хоста 50 (те же ifconfig
результаты - только другой последний квад), то eth0
молчит, и я вижу эхо ICMP eth1
, как и ожидалось.
Я хотел бы понять, как настроить каждый интерфейс для обработки только трафика, за который он отвечает в двух основных вариантах Linux. Я думаю, что я почти на месте, но мне не хватает чего-то, что я просто не могу найти.
- Debian Wheezy (7.x) или Debian Jessie (8.x)
- Корпоративный Linux (6.x) (RedHat / CentOS / Scientific / Oracle).
Я знаю, что решение для Debian должно быть хорошим как для Уизи, так и для Джесси, и что решение для EL должно быть одинаковым для всех версий EL 6.x. Я хотел бы избежать использования сценария RC для выполнения команд, вместо этого выбрав файлы конфигурации.
В Debian соответствующие файлы конфигурации, о которых я знаю:
/etc/network/interfaces
В EL 6.x соответствующие файлы конфигурации, о которых я знаю:
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1
Мой /etc/network/interfaces
файл Debian 8 "Jessie" :
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.10.10.140
netmask 255.255.255.0
gateway 10.10.10.1
# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.100.140
netmask 255.255.255.0
Я думаю, netstat -anr
может проиллюстрировать проблему:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
iptabels -L -t nat
Ответы:
Я хотел бы узнать больше об этой теме, чтобы улучшить конфигурацию, чтобы она была наилучшей, но вот что я имею до сих пор. Даже без включения ARP-фильтрации на всех сетевых интерфейсах (
net.ipv4.conf.all.arp_filter = 0
), как упоминалось @spuk, в этой конфигурации трафик кажется полностью разделенным.Файл
/etc/iproute2/rt_tables
, по крайней мере, в EL 6.x и DEB 7/8 одинаков. Это файл, который создает именованную таблицу маршрутизации для статических маршрутов.Выше номер именованного статического маршрута 1, по существу, произвольный; или каждый статический маршрут получает свой уникальный номер от 1 до 252.
Файл
/etc/network/interfaces
в DEB 7/8, по крайней мере:Результат
ip route show
на Debian:/etc/sysconfig/network
Файл EL 6.x :Выше GATEWAY является маршрутом по умолчанию. Ниже, если для BOOTPROTOCOL установлено значение DHCP, маршрут по умолчанию будет получен из DHCP.
/etc/sysconfig/network-scripts/ifcfg-eth0
Файл EL 6.x , без "HWADDR" и "UUID":/etc/sysconfig/network-scripts/ifcfg-eth1
Файл EL 6.x , без "HWADDR" и "UUID":/etc/sysconfig/network-scripts/route-eth1
Файл EL 6.x :/etc/sysconfig/network-scripts/rule-eth1
Файл EL 6.x :Результат
ip route show
на EL 6.x:источник
Я не полностью прочитал все ваши посты (извините, не могу сейчас потратить время), но я полагаю, что это может быть связано с тем, как Linux реализует модель IP-хоста :
С этой же страницы:
То есть в Linux по умолчанию IP-адреса «принадлежат хосту», а не строго «интерфейсу». Вы можете изменить это поведение с помощью
arp_filter
,rp_filter
,arp_announce
,arp_ignore
параметры ядра (получили от LVS: ARP - Проблемный , видел здесь ). Также смотрите ip-sysctl.txt .источник