我在内部 192.168.1.* 网络上设置了几台机器,并且我有一个公共 IP,我的路由器将所有端口都链接到我网络 192.168.1.3 上的内部 Linux 机器。我想知道如何配置 Linux 机器上的 DNS 服务器,以便根据主机名转发到内部 LAN IP。例如,computer4.83.22.56.12 会找到我的机器,然后转发到本地网络上的 192.168.1.4。
这样我就可以在一个 IP 下运行多个 Web 服务器。顺便说一下,我使用 Ubuntu。
谢谢,戴夫
编辑 -
抱歉,这个问题让人困惑,我可能喝醉了问的。我的意思是,我的路由器 NAT 后面有多个 Linux 机器,它们都有一个本地 IP 192.168.1.2-10。我有一个公共 IP,它只指向路由器(另一个 Linux 机器),我希望它通过子域/主机名指向其中一个机器。例如:
domain.com -> 路由器 -> 公共 IP 上的主机箱
box2.domain.com -> 路由器 -> 192.168.1.3
希望有帮助?你能帮助我吗?
--
答案1
您不需要这样做。如果您使用 Apache,则可以使用虚拟主机功能。
答案2
首先,Harv 说得对,你可以使用虚拟主机让单个 Apache 服务器为多个网站提供服务。如果你更喜欢使用单独的物理主机或服务器实例(也许你想同时运行 IIS、aolserver 和 Apache?),这也是可行的。
对于这两种情况,请在外部 DNS 中为您想要的每个服务器名称添加一个条目。例如,假设您的域是example.com
,这是 的区域文件example.com
:
@ IN A my.ip.is.here
www IN CNAME example.com.
apache IN CNAME example.com.
vhost IN CNAME example.com.
这允许外部主机解析 example.com、www.example.com、apache.example.com 和 vhost.example.com。单个端口上的所有请求都必须转发到单个主机:使用多个主机的唯一方法是使用某种过滤器:您可以使用防火墙规则 ()iptables
或使用像 squid 这样的代理。
如果您不希望有多个主机(更简单),只需在您的 apache 配置中为每个主机添加一个部分即可。鉴于您使用的是 Ubuntu,我认为它们通常安装在 /etc/apache2/sites-available 中,并在激活时在 /etc/apache2/sites-enabled 中提供符号链接。试试这个:
cd /etc/apache2/sites-available
cp the-default-site-file-name mysite
cd ../sites-enabled
ln -s ../sites-available/mysite 01mysite
编辑 mysite 文件以指向其他文档文件夹,并将 ServerName 更改为其中一个 vhosts
答案3
我觉得这个问题的措辞令人困惑。我可以假设你问的是两个问题之一。
1) 单个 Web 服务器可以使用一个 IP 托管多个网站吗?答案是可以的。使用以下链接了解详情:http://httpd.apache.org/docs/2.0/vhosts/examples.html
2) BIND 能否用于对内部机器和外部机器进行不同的名称解析?答案是肯定的。请查看以下链接之一:http://www.howtoforge.com/two_in_one_dns_bind9_views http://www.cyberciti.biz/faq/linux-unix-bind9-named-configure-views/
我多年前就使用过 howto forge 文章。你可能需要对 BIND “views” 做进一步的研究
如果两个服务位于同一台机器上,则需要在同一台服务器上配置这两个部分。首先,您需要在 DNS 中解析主机(正确设置视图),然后您需要设置 Apache 以根据请求的域响应每个请求。