在 FreeBSD 6.2 上将端口转发到另一台机器

在 FreeBSD 6.2 上将端口转发到另一台机器

我正在关闭旧的 FreeBSD 6.1 服务器,但我需要将 80 和 443 转发到它的替换服务器,同时等待那些缓存 DNS 记录的时间比我的 TTL 更长的恶意 ISP 采取行动。

我该怎么做?

答案1

L7解决方案:
您可以使用nginx作为反向代理,并将所有请求从旧 IP 重定向到新 IP,使用简单的配置如下:

server {
    listen 80;
    listen 443 default ssl;

    server_name www.YOURDOMAIN.com YOURDOMAIN.com;

    #SSL SETTING MUST BE HERE

    location / {
        proxy_pass        http://NEW_IP_HERE/;
        proxy_set_header  Host             $host;
        proxy_set_header  X-Real-IP        $remote_addr;
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

L4解决方案:
pf.conf:

rdr on rl0 proto tcp from any to YOUR_OLD_IP port 80 -> YOUR_NEW_IP 
rdr on rl0 proto tcp from any to YOUR_OLD_IP port 443 -> YOUR_NEW_IP 

不要忘记替换rl0为您的网卡名称

然后做

# kldload pf
# pfctl -f /etc/pf.conf
# pfctl -e

答案2

使用 apache,您可以做类似的事情。

<VirtualHost *:80>
    Redirect permanent / http://new.domainname.fr/
ServerName *.domainame.fr
    ServerName domainame.fr
</VirtualHost>

使用子域名将强制执行新的 DNS 请求。稍后您可以强制将新域名重定向到 www。

但也许有相同的域名,而你只是在等待 DNS 更新。那么 HTTP 重定向将不起作用,而一些 iptable 转发可能会有用。

ipfw add divert 80 tcp from any to ${my_ip} 80 via ${local_if} in
ipfw add divert 443 tcp from any to ${my_ip} 443 via ${local_if} in

或者你也可以放一张空白页:

The site is moving, you have to update your DNS to IP_ADDRESS.

祝你好运

答案3

设置代理,或创建简单的 HTTP“位置:”重定向。越简单越好:它是临时的,不要浪费时间 :)

答案4

看看 NetCat,它可以监听一个端口,然后重定向到另一台服务器上的另一个端口

http://www.debian-administration.org/articles/58是一个如何实现的示例。

相关内容