От подсети к подсети, пересылающей трафик

Мне интересно, как перенаправить трафик со шлюза в подсеть.

настройка сети

У меня есть эта рабочая настройка, Хост A за туннелем может пинговать HOST B 10.151.0.1, но не HOST C 10.151.0.2.

Если я TCPDUMP-пакет на HOST B 10.151.0.1 (шлюз подсети), я вижу эхо-запрос на интерфейсе

tcpdump: listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
     (host A)10.0.1.18 > (host c)10.151.0.2: ICMP echo request, id 21863, seq 7, length 64

Таким образом, пакет прибывает на (хост b) 10.151.0.1, но не пересылается на 10.151.0.2 хост C. Я ничего не вижу в интерфейсе хоста C.

Я включил переадресацию ip и добавил эти правила iptables (хост B):

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
iptables -A FORWARD -i eno1 -o eno2 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno2 -o eno1 -j ACCEPT

Я также пытаюсь добавить этот маршрут к хосту C:

ip route add 10.151.0.0/30 via 10.151.0.2 dev eno2

Может быть, кто-нибудь может мне помочь ? Большое спасибо

Я стараюсь избегать использования нескольких хостов ipsec, обращаясь к целой подсети. Кстати, Host B 10.151.0.1 может пинговать 10.151.0.2; -)

ОБНОВЛЕНИЕ 1: Теперь я могу выполнить эхо-запрос HOST A FROM HOST C с помощью прокси-ARP:

 echo 1 > /proc/sys/net/ipv4/conf/eno2/proxy_arp

Волшебное событие:

root@hostC:/home/administrateur# ping 10.0.1.21
PING 10.0.1.21 (10.0.1.21) 56(84) bytes of data.
64 bytes from 10.0.1.21: icmp_seq=1 ttl=62 time=16.0 ms
64 bytes from 10.0.1.21: icmp_seq=2 ttl=62 time=16.0 ms

НО я всегда не могу проверить связь с хостом C с хоста A, но эхо-запрос между хостом A и B в порядке

UPDATE2: Удалите это из HOST B, и все заработает:

/sbin/route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.151.0.1
/sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

Все хосты могут пинговать все хосты, от подсети к подсети работают :)

1
задан 7 April 2020 в 10:52
2 ответа

Ваш маршрут на HOST C должен быть таким:

ip route add HOST-A-IP-RANGE via 10.151.0.2 dev eno2

E.G:

IP route add 10.0.1.0/24 via 10.151.0.2 dev eno2

На самом деле это может быть неправильно, потому что у меня нет вашего сетевого адреса Host-A. И вы также должны добавить тот же маршрут на хост-A.

ip route add HOST-B-IP-RANGE via 10.151.0.2 dev eno2
0
ответ дан 4 January 2021 в 09:01

Я добавил маршрут на хосте C:

10.0.1.0/24 via 10.151.0.2 dev eno2 

Если я отправляю эхо-запрос HOST A с хоста C:

root@HostC:/home/administrateur# ping 10.0.1.21
PING 10.0.1.21 (10.0.1.21) 56(84) bytes of data.
From 10.151.0.2 icmp_seq=1 Destination Host Unreachable
From 10.151.0.2 icmp_seq=2 Destination Host Unreachable
From 10.151.0.2 icmp_seq=3 Destination Host Unreachable
From 10.151.0.2 icmp_seq=4 Destination Host Unreachable

Это tcpdump от хоста B:

root@hostB:/home/administrateur# tcpdump -pni eno2 -vvv
tcpdump: listening on eno2, link-type EN10MB (Ethernet), capture size 262144 bytes
14:04:30.980083 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.1.21 tell 10.151.0.2, length 46
14:04:32.004601 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.1.21 tell 10.151.0.2, length 46
14:04:33.028100 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.1.21 tell 10.151.0.2, length 46
14:04:34.052188 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.1.21 tell 10.151.0.2, length 46

Хост B получает запрос ARP но это все, нет трассировки эхо-запроса?

Другое упражнение пингует хост C от хоста A:

administrateur@HostA:~$ ping 10.151.0.2
PING 10.151.0.2 (10.151.0.2) 56(84) bytes of data.
^C
--- 10.151.0.2 ping statistics ---
30 packets transmitted, 0 received, 100% packet loss, time 28999ms

TCPDUMP ENO1 HostB:

root@hostB:/home/administrateur# tcpdump -pni eno1 -vvv | grep 10.151.0.2
tcpdump: listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
    10.0.1.21 > 10.151.0.2: ICMP echo request, id 27436, seq 20, length 64
    10.0.1.21 > 10.151.0.2: ICMP echo request, id 27436, seq 21, length 64
    10.0.1.21 > 10.151.0.2: ICMP echo request, id 27436, seq 22, length 64

TCPDUMP eno2 HostB пуст: корень @ hostB: / home / administrateur # tcpdump -pni eno2 -vvv tcpdump: прослушивание eno2, тип канала EN10MB (Ethernet), размер захвата 262144 байта

TCPDUMP eno2 HostC пуст.

Пинг между хостом A и B в порядке:

administrateur@hostA:~$ ping 10.151.0.1
PING 10.151.0.1 (10.151.0.1) 56(84) bytes of data.
64 bytes from 10.151.0.1: icmp_seq=1 ttl=63 time=14.2 ms
64 bytes from 10.151.0.1: icmp_seq=2 ttl=63 time=14.1 ms
64 bytes from 10.151.0.1: icmp_seq=3 ttl=63 time=14.1 ms

Кажется, что хост B не пересылает на хост C.

0
ответ дан 4 January 2021 в 09:01

Теги

Похожие вопросы