У меня есть 2 linux box A и B, оба RHEL 7.
Конфигурация B nic:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.74.61.131 netmask 255.255.254.0 broadcast 10.74.61.255
inet6 fe80::1011:12ff:fec7:d118 prefixlen 64 scopeid 0x20<link>
ether 12:11:12:c7:d1:18 txqueuelen 1000 (Ethernet)
RX packets 4599 bytes 503250 (491.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4489 bytes 693330 (677.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.74.60.97 netmask 255.255.254.0 broadcast 10.74.61.255
inet6 fe80::10b3:c9ff:fe85:47b5 prefixlen 64 scopeid 0x20<link>
ether 12:b3:c9:85:47:b5 txqueuelen 1000 (Ethernet)
RX packets 136 bytes 8864 (8.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 274 bytes 22184 (21.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
B Таблица IP-маршрутизации ядра
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.74.60.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.74.60.1 0.0.0.0 UG 101 0 0 eth1
10.74.60.0 0.0.0.0 255.255.254.0 U 100 0 0 eth0
10.74.60.0 0.0.0.0 255.255.254.0 U 101 0 0 eth1
146.1.242.0 10.74.61.26 255.255.254.0 UG 0 0 0 eth1
B ip маршрут
default via 10.74.60.1 dev eth0 proto static metric 100
default via 10.74.60.1 dev eth1 proto static metric 101
10.74.60.0/23 dev eth0 proto kernel scope link src 10.74.61.131 metric 100
10.74.60.0/23 dev eth1 proto kernel scope link src 10.74.60.97 metric 101
146.1.242.0/23 via 10.74.61.26 dev eth1
Маршрут B до 146.1.242.62:
ip route get 146.1.242.62
146.1.242.62 via 10.74.61.26 dev eth1 src 10.74.60.97
cache
Конфигурация nic
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.74.61.26 netmask 255.255.254.0 broadcast 10.74.61.255
ether 12:d5:c1:64:c1:84 txqueuelen 1000 (Ethernet)
RX packets 41439 bytes 2210425 (2.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 78272 bytes 23367775 (22.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 10.74.60.101 netmask 255.255.254.0 broadcast 10.74.61.255
ether 12:f6:c9:b0:75:05 txqueuelen 1000 (Ethernet)
RX packets 521 bytes 32470 (31.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 275 bytes 22494 (21.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Таблица IP-маршрутизации ядра
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.74.60.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.74.60.1 0.0.0.0 UG 101 0 0 eth1
10.74.60.0 0.0.0.0 255.255.254.0 U 100 0 0 eth0
10.74.60.0 0.0.0.0 255.255.254.0 U 101 0 0 eth1
IP-маршрут
default via 10.74.60.1 dev eth0 proto static metric 100
default via 10.74.60.1 dev eth1 proto static metric 101
10.74.60.0/23 dev eth0 proto kernel scope link src 10.74.61.26 metric 100
10.74.60.0/23 dev eth1 proto kernel scope link src 10.74.60.101 metric 101
A используется в качестве шлюза, в B любой трафик, предназначенный для 146.1.242.0/23, проходит через eth1, у которого есть шлюз 10.74.61.26.
B -> eth1 (gw 10.74.61.26) ----> A (eth0 10.74.61.26)
Маршрут до 146.1.242.62:
ip route get 146.1.242.62
146.1.242.62 via 10.74.61.26 dev eth1 src 10.74.60.97
cache
Я сделал маршрутизируемую конфигурацию IP-маршрутизации /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
Включен и запущен брандмауэр. Iptables все принимаются, ничего не отбрасывается или не отклоняется.
Итак, когда я пингую от B
ping -I eth1 146.1.242.62
PING 146.1.242.62 (146.1.242.62) from 10.74.60.97 eth1: 56(84) bytes of data.
^C
--- 146.1.242.62 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
Это никогда не проходит, что я делаю не так.
Когда я пингую от B к A, ниже отображается результат tcpdump
ping -I eth0 146.1.242.62
PING 146.1.242.62 (146.1.242.62) from 10.74.61.131 eth0: 56(84) bytes of data.
64 bytes from 146.1.242.62: icmp_seq=1 ttl=50 time=36.8 ms
^C
--- 146.1.242.62 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5009ms
tcpdump ответ icmp:
IP 146.1.242.62 > ip-10-74-61-131.ebiz.ee.com: ICMP echo reply, id 3405, seq 1, length 64
IP ip-10-74-61-131.ebiz.ee.com > 146.1.242.62: ICMP echo request, id 3405, seq 2, length 64
IP 146.1.242.62 > ip-10-74-61-131.ebiz.ee.com: ICMP echo reply, id 3405, seq 2, length 64
IP ip-10-74-61-131.ebiz.ee.com > 146.1.242.62: ICMP echo request, id 3405, seq 3, length 64
IP 146.1.242.62 > ip-10-74-61-131.ebiz.ee.com: ICMP echo reply, id 3405, seq 3, length 64
IP ip-10-74-61-131.ebiz.ee.com > 146.1.242.62: ICMP echo request, id 3405, seq 4, length 64
IP 146.1.242.62 > ip-10-74-61-131.ebiz.ee.com: ICMP echo reply, id 3405, seq 4, length 64
IP ip-10-74-61-131.ebiz.ee.com > 146.1.242.62: ICMP echo request, id 3405, seq 5, length 64
Но когда я сделаю
ping -I eth1 146.1.242.62
PING 146.1.242.62 (146.1.242.62) from 10.74.60.97 eth1: 56(84) bytes of data.
^C
--- 146.1.242.62 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms
нет ответа icmp tcpdump.
iptables от A по состоянию на 21.11.2016
iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
...
-A PREROUTING -j LOG --log-prefix "-- PRE ROUTE--" --log-level 6
-A POSTROUTING -j LOG --log-prefix "-- POST ROUTE--" --log-level 6
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
iptables из B:
iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -j LOG --log-prefix "-- POST ROUTE--" --log-level 6
После включения журнала для пост-маршрута в B и журнала до и после маршрута в A, я отправил ping-запрос на цель (146.1.242.62), он регистрируется в пост-маршруте B, но ничего не в предварительном маршруте A. Ниже представлены запись журнала и ping
ping 146.1.242.62
PING 146.1.242.62 (146.1.242.62) from 10.74.60.97 eth1: 56(84) bytes of data.
^C
--- 146.1.242.62 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms
B log:
Nov 21 10:36:25 localhost kernel: -- POST ROUTE--IN= OUT=eth1 SRC=10.74.60.97 DST=146.1.242.62 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=19877 DF PROTO=ICMP TYPE=8 CODE=0 ID=4920 SEQ=1
A log: none, no log in PRE ROUTE & POST ROUTE about the ping
В вашем сообщении нет правил iptables. Я предполагаю, что на вашем хосте A вы должны убедиться, что проходящий трафик получает NAT-ed.
Может помочь выполнение следующей команды от имени пользователя root:
iptables -t nat -A POSTROUTING --src 10.74.60.97/32 \! --dst 10.74.61.26/32 -o eth0 -j MASQUERADE
Вы также можете найти tcpdump
полезное, устранение неполадок сети.