У меня есть следующий дизайн:
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.