У меня простая сеть с тремя системами Linux под управлением CentOS 2.6.

       Linux 1
(eth1: 192.138.14.1/24)
          |
          |
(eth4: 192.138.14.4/24)
       Linux 2
(eth2: 192.138.4.3/24)
          |
          |
(eth3: 192.138.4.2/24)
       Linux 3

Я не могу пропинговать Linux 3 из Linux 1. Однако я могу пинговать с Linux 1 на Linux 2 (eth2) и с Linux 3 на Linux 2 (eth4). Это означает, что в Linux 1 я могу пропинговать 192.138.4.3, но не 192.138.4.2.

Ниже приведен вывод команды route -n в Linux1.

Linux1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

В Linux 2:

Linux2# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.15.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.138.14.0    192.138.14.4    255.255.255.0   UG    0      0        0 eth4
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth4
192.138.4.0     192.138.4.3     255.255.255.0   UG    0      0        0 eth2
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.138.16.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 eth2 
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 eth4
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

В Linux 3:

Linux3# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
10.135.18.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 eth3
0.0.0.0         10.135.18.1     0.0.0.0         UG    0      0        0 eth0

Я включил переадресацию IP в Linux 2

Linux2# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1

Linux2#: sysctl -p 
sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_sack = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

Результат iptables -L в Linux 2:

Linux2# iptables -L  
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere       

Чтобы пинговать Linux3 из Linux 1, я должен добавить определенные правила для icmp в iptables? Если нет, то что мне не хватает?

2 ответа2

2

Есть несколько проблем с вашей настройкой.

Во-первых, вы используете публичные маршрутизируемые адреса, как если бы они были частными адресами. Например, 192.138.14.1 - это Chapters Capital Management, LLC в Нью-Джерси, а 192.138.4.1 - это вычислительный центр Лондонского университета (Великобритания). И так далее. Пожалуйста, вернитесь к использованию адресов в диапазоне 192.168.0.0/16.

Во-вторых, ваши таблицы маршрутизации содержат много ошибок. Вам лучше начать заново, стереть полностью текущие таблицы маршрутизации и настроить их следующим образом с помощью текущей утилиты ip из пакета iprouter2 вместо устаревших утилит, таких как route.

В Linux1 разрешите администратору сети или dhcp согласовать таблицу локальной маршрутизации, а затем добавьте:

  ip route add default via 192.168.14.4

То же самое в Linux3, за исключением того, что команда:

  ip route add default via 192.168.4.3

То же самое на Linux2, кроме:

  ip route add default via 10.135.18.1
  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Таким образом, Linux2 действует как маршрутизатор / шлюз как для Linux1, так и для Linux3, он сам имеет подходящий интернет-шлюз и скрывает интернет-трафик из Linux1 и Linux3, как если бы он был его собственным (в этом смысл команды iptables ).

Обратите внимание, что в приведенном выше примере я уже преобразовал адреса в диапазоне 192.138.0.0/16 в диапазон 192.168.0.0/16.

-1

Оба сервера linux1 и linux3 имеют локальную маршрутизацию 192.138.4.0 и 192.168.14.0. Так что ничего не отправляется на linux2 для маршрутизации

Linux 1

Linux1# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1 
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Linux3

Linux3# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.138.14.0    0.0.0.0         255.255.255.0   U     0      0        0 eth3
192.138.4.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3

Можете ли вы дать результат этих команд на linux1 и linux3?

# ip -4 addr list
# ip route list

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .