Назад | Перейти на главную страницу

iptables SNAT возвращает трафик, не доходящий до клиента

У меня есть следующий дизайн:

client                     linuxserver              destination
192.168.160.34             192.168.163.196           192.168.18.1

Я могу пинговать сервер с клиента и клиент с сервера, они оба находятся в одной подсети, 192.168.160/22, Я также могу пинговать пункт назначения с сервера

список маршрутов IP клиентов:

default via 192.168.163.196 dev ens192 
192.168.160.0/22 dev ens192 proto kernel scope link src 192.168.160.34

политика клиента iptables принимается во всех цепочках и уже сброшена. iptables сервера принимается во всех цепочках, имеет некоторые docker + kvm правила и т. д.

Я продолжаю добавлять на сервер следующее:

iptables -t nat -A POSTROUTING -s 192.168.160.34 -j SNAT --to 192.168.163.196

Я также добавил net.ipv4.ip_forward=1 и применил его к параметрам ядра.

Я все еще не могу пропинговать пункт назначения от клиента.

tcpdump:

 00:00:00.000000 IP (tos 0x0, ttl 64, id 3182, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 1, length 64
 00:00:00.000052 IP (tos 0x0, ttl 63, id 3182, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.163.196 > 192.168.18.1: ICMP echo request, id 4442, seq 1, length 64
 00:00:00.000680 IP (tos 0x0, ttl 125, id 32481, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.18.1 > 192.168.163.196: ICMP echo reply, id 4442, seq 1, length 64
 00:00:01.028150 IP (tos 0x0, ttl 64, id 3405, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 2, length 64
 00:00:00.000042 IP (tos 0x0, ttl 63, id 3405, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.163.196 > 192.168.18.1: ICMP echo request, id 4442, seq 2, length 64
 00:00:00.000489 IP (tos 0x0, ttl 125, id 32749, offset 0, flags [none], proto ICMP (1), length 84)
    192.168.18.1 > 192.168.163.196: ICMP echo reply, id 4442, seq 2, length 64
 00:00:01.023522 IP (tos 0x0, ttl 64, id 3641, offset 0, flags [DF], proto ICMP (1), length 84)
    192.168.160.34 > 192.168.18.1: ICMP echo request, id 4442, seq 3, length 64

Мои пакеты icmp достигают места назначения и возвращаются на сервер Linux, но не достигают клиента. Любая помощь будет оценена.

Вещи, которые я пробовал:

Протестируйте правило nat на чистой установленной коробке с той же информацией, и оно сработало. (Просто изменил шлюз по умолчанию на клиенте для этого теста на новый сервер)

Очистка всех цепочек на сервере Linux, снова добавьте правило и попробуйте еще раз (не помогло)

добавить следующие параметры ядра на сервере Linux (не помогло):

net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.accept_source_route = 1

Я считаю, что вам нужно:

iptables -t nat -A POSTROUTING -d 192.168.18.1 -j SNAT --to <some_ip_here>

где - это IP-адрес интерфейса linuxserver, подключенного к той же сети, что и место назначения. Думаю, это будет 192.168.18.