Я нашел, что следующее работало - взятый из http://www.tomshardware.com/forum/12532-42-iptables-access-local-server-external
Пример: (внешний IP 1.1.1.1, внутренняя сеть 192.168.1.0/24, веб-сервер 192.168.1.10, маршрутизатор 192.168.1.1)
Подключение через SSH и затем входит:
iptables -t nat -A PREROUTING -d 1.1.1.1 -m tcp -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10
Повторитесь для каждого порта, который Вы передали.
Затем введите следующий правило SNAT:
iptables -t nat -A POSTROUTING -d 192.168.1.10 -s 192.168.1.0/24 -j SNAT --to-source 192.168.1.1
Это, кажется, работает просто великолепно, но я не могу выяснить, как сохранить его для выживания перезапуска маршрутизатора.
Вы пытались смешивать виртуальный хостинг на основе имен и IP на IP-адресе. Это почти никогда не дает ожидаемых результатов.
Теперь, когда поступает запрос, сервер сначала проверяет, использует ли он IP-адрес, который соответствует NameVirtualHost. Если это так, он будет просматривать каждый раздел с совпадающим IP-адресом и пытаться найти тот, в котором ServerName или ServerAlias совпадает с запрошенным именем хоста. Если он его находит, он использует конфигурацию для этого сервера. Если соответствующий виртуальный хост не найден, будет использован первый из перечисленных виртуальных хостов, соответствующих IP-адресу.
В результате любой виртуальный хост в блоке
получает полностью игнорируется для любых запросов, поступающих на IP-адрес, который вы указали в своем <