у меня есть Сервер Ubuntu 12.04 соединен с две подсети.
Eth0 - это 20.20.20.1
, он размещает веб-сервер Apache на порту 80. Eth1 - динамический IP-адрес в 10.10.10.0
подсеть.
Этот сервер не является шлюзом, т.е. никакие рабочие станции не указывают на этот сервер.
Там есть другой веб-сервер находится во второй подсети в 10.10.10.1
.
Я бы хотел пользователей из первой подсети увидеть этот второй сервер, расположенный во второй подсети. Например, если пользователь вводит http: //20.20.20.1
(порт 80) он видит 1-й веб-сервер находится в собственной подсети, если пользователь вводит https: //20.20.20.1
(порт 443) он получает отправлено во вторую подсеть и видит 2-й веб-сервер в 10.10.10.1
.
Вот что я пробовал:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -d 10.10.10.1 -p tcp --dport 443 -m state \
--state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT \
--to-destination 10.10.10.1:443
Однако запросы из первой подсети не перенаправляются на 10.10.10.1
, к сожалению.
Вам не нужен NAT или что-то еще. Это основная задача маршрутизации. Пользователи подсети 20.x должны использовать ваш сервер ubuntu в качестве шлюза в подсеть 10.x. Автоматическое распространение настроек может быть достигнуто несколькими способами.
Я думаю, у вас есть две сетевые карты на 10.10.10.1
машина и проблема в исходном IP.
Например клиент 20.20.20.15
пытается получить доступ https: //20.20.20.1
. Вы DNAT этот трафик на 10.10.10.1:443
.
А сейчас 10.10.10.1
получает пакет с исходным IP 20.20.20.15
. Нет конкретного правила для 20.20.20.0/24
подсети, поэтому ответ отправляется через шлюз по умолчанию, который не подключен к 20.20.20.1
машина. Пакет уходит в другое место и в конце концов сбрасывается.
Вам нужно либо добавить ip route 20.20.20.0/24 dev ...
на сервере 10.10.10.1
Или добавить SNAT правило на 20.20.20.1
:
iptables -t nat -A POSTROUTING -p tcp --dport 443 -d 10.10.10.1 -o eth1 -j MASQUERADE
Но в этом случае в журналах веб-сервера вы увидите MASQUERADEd IP-адрес вашего первого (в данном случае 20.20.20.1) сервера в REMOTE_ADDR
и, может быть, это тебе не подходит. Так что лучше добавить статический маршрут к подсети, как я упоминал ранее.