iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
-m statistic --mode nth --every 3 --packet 0 \
-j SNAT --to-source 10.0.0.1
iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
-m statistic --mode nth --every 2 --packet 0 \
-j SNAT --to-source 10.0.0.2
iptables -A POSTROUTING -t nat -p tcp -d 192.168.1.1 --dport 80 \
-j SNAT --to-source 10.0.0.3
proxy_pass http://dynamic;
В server_name необходимо прописать api.site1.com ?
ping -4 -c 1 inter-proxy1.localhost
PING inter-proxy1.localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms
почему запрос все время отправляется с default ip 45.148.28.67
curl --interface 45.148.31.170 'https://api.ipify.org?format=json'
, чтобы убедиться, что на уровне сети всё настроено корректно.Как сделать чтобы Iptables поддерживал fqdn? Удаленный сервис может находится в облаке.
Как логировать POSTROUTING в отдельный файл для траблшутинга и мониторинга
-J LOG
, там можно добавить префикс по которому, в итоге, можно фильтровать записи. Я думаю можно заставить syslog писать их в отдельный лог. Или если есть ELK заставить fiebeat писать эти логи в отдельный индекс.Можно ли эту конфигурацию добавить в docker и docker-composer.yml для сервисов работающих в докере? По умолчанию докер не видит ip адреса хост машины и не понятно, как их привязать к докеру.
network: host
). Или пошаманить с правилами в таблице NAT - этот вариант предпочтительней (но придётся все правила руками писать и отключить докеру возможность управлять фаирволом).
Можно ли все то что сделанно на iptables переделать на firewalld ?
Правильно ли было решать эту задачу на nginx ?
root@srv-test:~# curl --interface 151.23.54.101 ident.me
151.23.54.101
root@srv-test:~# curl --interface 151.23.54.102 ident.me
151.23.54.102
root@srv-test:~# curl --interface 151.23.54.103 ident.me
151.23.54.103
server {
listen 3131;
server_name proxy.localhost;
location / {
proxy_pass http://ident.me/;
proxy_bind 151.23.54.101;
}
}
server {
listen 3132;
server_name proxy.localhost;
location / {
proxy_pass http://ident.me/;
proxy_bind 151.23.54.102;
}
}
server {
listen 3133;
server_name proxy.localhost;
location / {
proxy_pass http://ident.me/;
proxy_bind 151.23.54.103;
}
}
root@srv-test:/etc/nginx/vhosts/servertest# curl proxy.localhost:3131
151.23.54.101
root@srv-test:/etc/nginx/vhosts/servertest# curl proxy.localhost:3132
151.23.54.102
root@srv-test:/etc/nginx/vhosts/servertest# curl proxy.localhost:3133
151.23.54.103
$host
через кастомный заголовок X-Forwarded-Host (в прочем это может и не понадобится). Для firewalld такая комманда должна быть ? Firewalld поддерживает fqdn ?