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

Как добавить IP-маршрут для маршрутизации трафика через интерфейс, когда пункт назначения также является этим интерфейсом

Я тестировал keepalived и готовился к развертыванию на своих vps.

Моя установка:

(...)
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel  state UP group default qlen 1000
    link/ether ab:cd:ef:ab:cd:ef brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global ens4
       valid_lft forever preferred_lft forever
    inet 192.168.1.2/24 scope global ens4:1
       valid_lft forever preferred_lft forever
    inet 192.168.1.3/24 scope global secondary ens4:2
       valid_lft forever preferred_lft forever

192.168.1.2 частный IP-адрес, "просматривающий" частную сеть (назначенный моим хостинг-провайдером) 192.168.1.3 это плавающий IP-адрес, также в частной сети (назначенный моим хостинг-провайдером)

У меня отдельный хозяин, 192.168.1.99, который я хочу направлять через свой плавающий IP-адрес. Итак, при keepalived, когда хост становится главным, я добавляю эти маршруты:

ip route add 192.168.1.3/32 via 192.168.1.3 dev ens4 src 192.168.1.3
ip route add 192.168.1.99/32 via 192.168.1.3 dev ens4 src 192.168.1.3

И все отлично работает, когда пингую 192.168.1.99 и запустив tcp dump на этом хосте, я вижу, что трафик маршрутизируется правильно.

Моя проблема в том, что я запускаю postgresql на этом хосте с плавающим IP-адресом, который я хотел бы получить только через 192.168.1.3 (даже через 127.0.0.1). И он отлично работает, если к базе данных осуществляется доступ извне. Когда я пытаюсь подключиться к 192.168.1.3 через 192.168.1.3 Я получаю сообщение об ошибке:

FATAL:  no pg_hba.conf entry for host "192.168.1.2", user "postgres", database "postgres", SSL off

Это говорит мне, что моя маршрутизация не работает, когда я использую ее с самого хоста keepalived.

Мне интересно, как изменить маршрутизацию, чтобы трафик проходил через 192.168.1.3 даже если они исходят от того же хоста.

У тебя есть access deny ошибка, что означает, что маршрутизация работает хорошо.

Маршрутизация не меняет IP-адреса источника или назначения в IP-пакетах. Используйте брандмауэр, чтобы запретить доступ к базе данных postgres на 192.168.1.2 айпи адрес. Когда клиент postgress подключается к серверу 192.168.1.3 IP-адрес он использует первый IP-адрес 192.168.1.2 на интерфейсе сервера. Этот адрес не разрешен в pg_hba.conf файл конфигурации.

Также этот сетевой сценарий не подходит, потому что postgres и другое программное обеспечение будет отвечать с первого IP-адреса (которые находятся в одной сети) на ens4 интерфейс.

Такие правила маршрутизации добавлять не нужно, потому что все IP-адреса в них находятся в одной сети. 192.168.1.0/24.