LINUX.ORG.RU
ФорумAdmin

не получается подменить ip при помощи nat

 ,


0

2

Пытаюсь продублировать работу vpn сервера.

Система должна работать следующим образом. Есть два vpn сервера - один основной, другой его дублирует. У клиента поднято два vpn соединения - одно с основным, другое с дублирующим и скрипт который пингует основной vpn сервер, при падении основного скрипт в табличке nat делает подмену ip основного на ip дублирующего и опять продолжает пинговать основной. При поднятии основного, удаляет правила для nat и опять продолжает пинговать основной и т. д.

Для экспериментов сделал следующую систему из двух компов. На одном поднято два vpn сервера (например с ip основного 172.16.0.1 и ip дублирующего 10.0.0.1) и ftp сервер (который слушает два виртуальных интерфейса с ip 172.16.0.1 и 10.0.0.1) для проверки.

Со скриптом разобрался. Непонятки вот в чём.

На клиенте делаю подмену следующими правилами:

iptables -t nat -A PREROUTING -p tcp -d 172.16.0.1 -j DNAT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -p udp -d 172.16.0.1 -j DNAT --to-destination 10.0.0.1

Далее командой:

watch iptables -t nat -vnL

Смотрю сколько пакетов попали в эти правила. И оказывается что пакеты не попадают в эти правила. Я не пойму почему?

Просьба не предлагать следующий вариант - на дублирующем сервере пинговать основной и при его отсутствии на дублирующем перепрописывать сетевые данные основного. Если первый вариант не получится то сделаю этот.

Хотелось разобраться почему пакеты не попадают в правила для nat!

За помощь заранее благодарен!

★★

А чем у меня баннер Office 365 висит на этой странице?

anonymous
()
Ответ на: комментарий от v4567

В очередной раз перечитывая документацию по iptables и в частности про nat.

DNAT (Destination Network Address Translation) — подменяет адрес назначения для входящих пакетов, позволяя «пробрасывать» адреса или отдельные порты внутрь локальной сети.

SNAT — подменяет адрес источника для исходящих пакетов адресом того интерфейса, с которого они исходят. Такая операция позволяет, например, предоставлять доступ в Интернет целым локальным сетям через один шлюз.

Получается что подменить ip назначения для исходящих пакетов при помощи nat нельзя? Если это так, то можно ли другими средствами как то осуществить подмену ip назначения для исходящего пакета?

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Сделай:

echo 1 > /proc/sys/net/ipv4/ip_forward
Иначе пакеты будут отбрасываться.

generator ★★★
()
Ответ на: комментарий от v4567

SNAT — подменяет адрес источника для исходящих пакетов адресом того интерфейса, с которого они исходят.

Не читай больше документацию в этом месте.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Проблему с подменой ip решил.

Подмена адреса получателя в исходящем пакете

Вместо PREROUTING надо было писать OUTPUT, форвардинг здесь не причём, наверное надо ещё маршруты прописывать и заносить маки в arp таблицу.

На серваке пакеты дошли на 10.0.0.1

но написало вот что:

tcpdump -i tap2 -n -nn host 10.0.0.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap2, link-type EN10MB (Ethernet), capture size 96 bytes
11:44:00.547382 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:01.547237 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:02.550509 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:19.800992 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:20.803028 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:21.806169 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:22.809666 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:23.812757 arp who-has 10.0.0.1 tell 172.16.0.11
11:44:24.815973 arp who-has 10.0.0.1 tell 172.16.0.11

172.16.0.11 это ip клиента.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

Чувствую, что ты городишь какое-то несусветное извращение, но обосновать не могу - не представляю всей картины бедствия.
Дай полную конфигурацию: ip a s с обеих машин до подключения клиента, после подключения клиента по обоим каналам и после «обрыва» одного из каналов.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от v4567

И в чём сейчас проблема? Что клиент пытается идти с src-адреса 172.16.0.11? Дак ведь он исходно хочет идти на 172.16.0.1, поэтому и выбирает это src-адрес. DNAT изменяет только dst-адрес, src-адрес изменяет SNAT.

И зачем вам понадобился tap-интерфейс, чем tun не устраивает?

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.