AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 442920
Accepted
Mr.Boon
Mr.Boon
Asked: 2012-10-28 02:16:04 +0800 CST2012-10-28 02:16:04 +0800 CST 2012-10-28 02:16:04 +0800 CST

使用 iptables [centos] 进行 IP 到 IP 转发

  • 772

我有 2 个服务器。ip 为 1.1.1.1 的服务器 1 和 ip 为 2.2.2.2 的服务器 2

我的域 example.com 目前指向 1.1.1.1,但很快我将切换到 ip 2.2.2.2。我已经为域example.com设置了低TTL,但是在我更改域的ip地址后,有些人仍然会点击旧的ip a。

现在两台机器都运行带有 iptables 和 nginx 作为网络服务器的 centos 5.8。

我想将仍然访问服务器 1.1.1.1 的所有流量转发到 2.2.2.2,这样就不会有任何停机时间。

现在我找到了这个教程: http: //www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables但我似乎无法让它工作。

我启用了ip转发:echo "1" > /proc/sys/net/ipv4/ip_forward

之后我运行了这两个命令:

/sbin/iptables -t nat -A PREROUTING -s 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2:80
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

但是当我在我的浏览器中加载时http://1.1.1.1,我仍然得到托管在 1.1.1.1 上的页面,而不是来自 2.2.2.2 的内容。我究竟做错了什么?

centos
  • 2 2 个回答
  • 4047 Views

2 个回答

  • Voted
  1. Best Answer
    miono
    2012-10-28T02:19:26+08:002012-10-28T02:19:26+08:00

    尝试更改-s 1.1.1.1为-d 1.1.1.1

    你想匹配目标地址而不是源地址......

    您还需要调整您的 MASQUERADE 规则以包括流量在返回途中采用的接口。(很可能是 eth0 或类似的)。

    使用 -o 标志执行此操作。例如像这样:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    • 2
  2. zhenech
    2012-10-28T09:08:07+08:002012-10-28T09:08:07+08:00

    两台机器是否在同一个子网中并且可以不通过其他路由器就可以相互访问?否则,即使您正确设置,所描述的方法也不会起作用。

    在进行此类迁移时,我经常使用rinetd转发随机 TCP 端口。或者 Apache 的 mod_proxy,如果你无论如何都使用 Apache(你不用,但我用)。

    • 0

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve