Топология моей сети:
мак 192.168.1.4 | интернет - netcom 192.168.1.1-192.168.1.253 linux 192.168.2.1-192.168.2.2 windows
- netcom — это шлюз NAT в интернет
- netcom имеет статический маршрут к 192.168.2.0/24 через 192.168.1.253
- mac имеет статический маршрут к 192.168.2.0/24 через 192.168.1.253
- у mac по умолчанию gw 192.168.1.1
- в linux по умолчанию gw 192.168.1.1
- в linux есть переадресация портов и отключен брандмауэр
- в windows по умолчанию gw 192.168.2.1
- mac может пинговать windows, linux и netcom
- Linux может пинговать Windows, Mac и Netcom
- Windows может пинговать Mac и Linux, НО НЕ Netcom
- netcom может пинговать Mac и Linux, НО НЕ Windows
Наконец, я запустил tcpdump, пытаясь выполнить ping netcom из Windows (и наоборот), и он показывает, что пакеты проходят через правильные интерфейсы. Есть идеи, в чем может быть проблема?
ping из netcom в windows показывает следующие журналы:
пинг в netcom:
> пинг 192.168.2.2 приложение: echo 1 > /var/ping_dns_status PING 192.168.2.2 (192.168.2.2): 56 байт данных --- 192.168.2.2 статистика пинга --- 4 пакета передано, 0 пакетов получено, 100% потеря пакетов
tcpdump в Linux:
00:03:12.441283 В 18:f1:45:75:2c:24 ethertype IPv4 (0x0800), длина 100: 192.168.1.1 > 192.168.2.2: ICMP-запрос эха, идентификатор 5784, последовательность 0, длина 64 00:03:12.441341 Исходящий 00:0c:29:0b:03:c3 ethertype IPv4 (0x0800), длина 100: 192.168.1.1 > 192.168.2.2: ICMP-запрос на эхо, идентификатор 5784, последовательность 0, длина 64 00:03:12.441829 В 00:0c:29:e9:17:84 ethertype IPv4 (0x0800), длина 100: 192.168.2.2 > 192.168.1.1: ответ ICMP echo, идентификатор 5784, последовательность 0, длина 64 00:03:12.441850 Исходящий 00:0c:29:0b:03:b9 ethertype IPv4 (0x0800), длина 100: 192.168.2.2 > 192.168.1.1: ответ ICMP echo, идентификатор 5784, последовательность 0, длина 64
Wireshark на Windows:
192.168.1.1 192.168.2.2 ICMP 98 Echo (ping) запрос id=0x1698, seq=0/0, ttl=63 (ответ через 2548) 192.168.2.2 192.168.1.1 ICMP 98 Эхо (ping) ответ id=0x1698, seq=0/0, ttl=128 (запрос в 2547)
решение1
на машине linux пересылка пакетов отключена по умолчанию. Попробуйте выполнить команды:
iptables -A ПЕРЕСЫЛКА -i eth1 -j ПРИНЯТЬ
iptables -A ПЕРЕСЫЛКА -o eth1 -j ПРИНЯТЬ
(и те же две команды на других сетевых интерфейсах вместо eth1)
sysctl -w net.ipv4.ip_forward=1
и добавьте в /etc/sysctl.conf
net.ipv4.ip_forward = 0