Я тестировал 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
.