У меня проблема с моим VPS. Простой пример:
<?php $ip = $_SERVER['REMOTE_ADDR'];
Echo "User IP : " . $ip;
?>
Этот код должен отображать IP-адрес пользователя, но он показывает IP-адрес HN (а не IP-адрес VPS).
Опять же, когда я регистрируюсь через ssh в виртуальном контейнере, IP, который был зарегистрирован, является IP-адресом аппаратного узла.
Аналогичная проблема здесь: OpenVZ Host - это исходный IP-адрес, а не реальные веб-пользователи?
Вот конфигурация openVZ:
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
# Controls source route verification
net.ipv4.conf.all.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
# Disable proxy arp
net.ipv4.conf.default.proxy_arp = 0
# We do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.ip_conntrack_max=32760
Конфигурация IPTables
[root@nod1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
all -- clienti.alba.rdsnet.ro anywhere
all -- anywhere clienti.alba.rdsnet.ro
all -- clienti.alba.rdsnet.ro anywhere
all -- anywhere clienti.alba.rdsnet.ro
all -- clienti.alba.rdsnet.ro anywhere
all -- anywhere clienti.alba.rdsnet.ro
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTAB LISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:s sh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:s mtp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:h ttp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:f tp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:h ttps
REJECT all -- anywhere anywhere reject-with icmp-ho
Кто-нибудь может мне помочь? Кроме того, я не эксперт, поэтому, если кто-то может объяснить шаг за шагом, я был бы очень признателен.
Хорошо, вот что я сделал. Я остановил службу iptables и удалил раздел с mangle и nat из / etc / sysconfig / iptables. В соответствии с инструкциями Адама я удалил «iptable_mangle» из файла / etc / sysconfig / vz в строчном разделе «## IPv4 iptables kernel modules». Я сделал:
iptables -t nat -L iptables -t mangle -L
Я перезапустил службу iptables, и проблема решена.
Теперь я могу записать свой частный IP в журнал сервера: D
Многие благодарят Адама за указание на калечить и нац.
Удачи!
Скорее всего, у вас есть устройство обратной связи на всех ваших машинах VPS, поэтому попробуйте удалить его из общей конфигурации или в целях тестирования получить доступ к VPS и введите:
ifconfig вниз
еще раз проверьте исходящий IP.
С уважением, Божев
Не могли бы вы вставить вывод вашей конфигурации iptables? Вы пробовали то, что предложил Джерри Тунин в качестве потенциального решения?
iptables -t nat -L
iptables -t mangle -L
У вас есть прокси-сервер в вашем HN, который отправляет запрос на сервер в CT?
Если это ваш случай, вы должны указать своему прокси-серверу перенаправить IP-адрес клиента на ваш CT-сервер, а затем прочитать заголовок X-Forwarding-For.