Я использую два экземпляра Ubuntu 12.04, оба из которых не могут получить доступ друг к другу.
Машина 1:
eth0 - 10.0.0.20
eth1 - 10.0.0.30
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Машина 2:
eth0 - 10.0.0.100
eth1 - 10.0.0.40
netstat -nr:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Обе машины имеют доступ друг к другу только через Интернет, но не через VPC (другими словами, LAN). Отключение брандмауэра не помогает. Машина 1 может пинговать только 10.0.0.100. Машина 2 может пинговать только 10.0.0.30. Я не могу подключиться к какой-либо машине с протоколами TCP / UDP через локальную сеть. ACL отсутствуют, а демоны на машинах прослушивают все IP-адреса и все интерфейсы. В чем может быть проблема?
Изменить 1:
Похоже, проблема была в таблицах маршрутизации. Я решил проблему на машине 1 после удаления 1 сетевой карты на машине 2 и выполнения некоторых случайных действий. В результате DHCP получил следующие правила:
~$ ip rule
0: from all lookup local
32765: from 10.0.0.30 lookup 2
32766: from all lookup main
32767: from all lookup default
~$
Я не могу воспроизвести это на Машине 2, но могу добавить правила и таблицы маршрутизации вручную с помощью:
ip route add default via 10.0.0.1 dev eth0
ip route add default via 10.0.0.1 dev eth1 table 2
ip rule add from 10.0.0.167 lookup 2 prio 1000
Как я мог избежать этого вручную?
Попробуйте добавить маршруты более конкретно. Маршрутизация предпочтет первый совпадающий маршрут, упорядоченный по специфичности, метрике, а затем порядку добавления.
Например, на машине 1 добавьте следующий маршрут:
ip route add 10.0.0.40/32 dev eth1 src 10.0.0.30
А на машине 2:
ip route add 10.0.0.30/32 dev eth1 src 10.0.0.40
вы можете удалить более общие маршруты для eth1 на обеих машинах:
ip route del 10.0.0.0/24 dev eth1
Поскольку они находятся в / 24, вы должны попытаться получить их в разных подсетях, например, если бы оба eth1 были в 10.0.1.0/24, у вас вообще не было бы этой проблемы.