Мне интересно, как перенаправить трафик со шлюза в подсеть.
У меня есть эта рабочая настройка, хост 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 в порядке
ОБНОВЛЕНИЕ2: Удалите это из 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
Все хосты могут пинговать все хосты, от подсети к подсети работает :)
Я добавил маршрут на хосте C:
10.0.1.0/24 via 10.151.0.2 dev eno2
Если я пингую HOST A с Host 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, но и все, нет трассировки ping?
Другое упражнение пингует хост 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 пуст: root @ 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.
Ваш маршрут на HOST C должен быть таким:
ip route add HOST-A-IP-RANGE via 10.151.0.2 dev eno2
НАПРИМЕР:
IP route add 10.0.1.0/24 via 10.151.0.2 dev eno2
На самом деле это может быть неправильно, потому что у меня нет вашего сетевого адреса Host-A. И вы также должны добавить тот же маршрут на Host-A.
ip route add HOST-B-IP-RANGE via 10.151.0.2 dev eno2