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 / 问题 / 403626
Accepted
mikl
mikl
Asked: 2012-06-30 16:55:43 +0800 CST2012-06-30 16:55:43 +0800 CST 2012-06-30 16:55:43 +0800 CST

如何根据使用 Shorewall 访问的公共 IP 将 DNAT 转换为不同的本地 IP?

  • 772

我的服务器有几个公共 IP,并且正在运行一堆具有私有 IP 地址的虚拟机。

例如,我想将 232.21.23.23(公共)上的端口 80、443 和 8080 映射到 192.168.122.12(私有)。我尝试了几种不同的 NAT 映射,但似乎都不起作用:

# This doesn't work.
DNAT           net              loc:192.168.122.12  tcp  80,443,8080  -           232.21.23.23

# Neither does this.
DNAT           $FW              loc:192.168.122.12  tcp  80,443,8080  -           232.21.23.23

# Nor this.
DNAT           net:232.21.23.23 loc:192.168.122.12  tcp  80,443,8080

# I have no idea what I'm doing.
DNAT           $FW:232.21.23.23 loc:192.168.122.12  tcp  80,443,8080

谁能指出我正确的方向?

dnat shorewall
  • 2 2 个回答
  • 8406 Views

2 个回答

  • Voted
  1. Best Answer
    mgorven
    2012-07-01T22:49:53+08:002012-07-01T22:49:53+08:00

    你的第一条规则是正确的:

    DNAT    net loc:192.168.122.12  tcp 80,443,8080 -   232.21.23.23
    

    所以问题一定出在别处。你可以看到用这个创建的底层 iptables 规则:

    iptables -t nat -nvL net_dnat
    

    NATed 数据包仍然需要遍历 FORWARD 链并被接受。尝试添加以下规则以接受这些端口上的 VM 的流量:

    ACCEPT  net loc:192.168.122.12  tcp 80,443,8080
    
    • 2
  2. Jorge Salinas
    2015-08-04T09:50:55+08:002015-08-04T09:50:55+08:00

    作为对先前答案的补充评论,请确保放置规则的顺序。

    例子:

    假设您这样配置规则:

    DNAT 网络地址:172.17.20.25 tcp 80 0.0.0.0
    DNAT 网络地址:172.17.20.47 tcp 80 200.xyz

    如果您想通过端口 80 访问 172.17.20.47,您将始终以 172.17.20.25 结束,因为目标地址默认为 0.0.0.0。

    所以如果你想通过公共 IP 地址 200.xyz 到达 172.17.20.47,你应该修改规则的顺序:

    DNAT 网络地址:172.17.20.47 tcp 80 200.xyz
    DNAT 网络地址:172.17.20.25 tcp 80 0.0.0.0

    或者修改第一条规则的默认地址。

    我希望它有所帮助!

    • 1

相关问题

  • 什么对IP禁令更好?在防火墙(shorewall)级别,还是在 IIS 级别?

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