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 / 问题 / 487649
Accepted
Chris S
Chris S
Asked: 2013-03-14 17:54:48 +0800 CST2013-03-14 17:54:48 +0800 CST 2013-03-14 17:54:48 +0800 CST

具有环回 IP、IPFW 和 natd 的 FreeBSD Jail - 出站连接从监狱失败

  • 772

我有一个 FreeBSD 9.0 服务器。它有几个监狱,但它们都有同样的问题。他们无法发起与外界的连接。他们相互沟通,主人也很好。

相关rc.conf设置:

firewall_enable="YES"                   # IPFW
firewall_type="/etc/ipfw.rules"         # Rule script for IPFW

natd_enable="YES"                       # NAT for Internet Routing
natd_interface="wan0"                   # NAT Card
natd_flags="-f /etc/natd.conf -dynamic" # NAT Conf

ifconfig_lo1_name="jail1"
ifconfig_jail1="inet 192.168.1.101/32"

jail_asdf_rootdir="/jails/asdf"
jail_asdf_hostname="asdf.example.net"
jail_asdf_ip="192.168.1.101"
jail_asdf_devfs_enable="YES"

从sysctl.conf

security.jail.allow_raw_sockets=1

从ipfw.rules

# XXX 00050 divert natd ip4 from any to any via wan0
add 00060 check-state

# Allow me out
add 00135 allow ip from me to any keep-state
add 00136 allow ip6 from me6 to any keep-state

# HTTP
add 11010 allow tcp from any to me http setup keep-state
add 11011 allow tcp from any to me6 http setup keep-state
add 11012 allow tcp from any to me https setup keep-state
add 11013 allow tcp from any to me6 https setup keep-state
.... lots more rules like the above ....

# General Network - ICMP
add 61001 allow icmp from any to any

# XXX last rule is deny everything

从natd.conf

redirect_port tcp 192.168.1.101:80 80
redirect_port tcp 192.168.1.101:443 443

这对传入连接非常有效。我已经从多台计算机上测试过,我可以很好地访问该网站。

当我jexec 1 csh在监狱中获得外壳时,我无法创建传出连接。Jailresolv.conf指向主机服务器,它可以很好地执行名称解析。由于 ICMP 仍然无一例外地通过,我可以从监狱中 ping 通。

我可以tcpdump -i wan0 host 1.2.3.4在主机上做一个并在它通过时观察流量。我看到 SYN 出去了,SYN ACK 回来了。然后几秒钟后再次与监狱重试相同。

我怎样才能允许从我的监狱传出连接?

更新:
我相信我理解这个问题。传出数据包通过防火墙规则开始,进行 NAT 转换,允许传出并记录为进行传出连接的外部 IP。当返回数据包返回时,它会经过转换,但现在不匹配检查状态规则,因为数据包具有内部 IP。仍在寻找解决方案。

jail
  • 1 1 个回答
  • 3685 Views

1 个回答

  • Voted
  1. Best Answer
    Chris S
    2013-03-16T05:55:27+08:002013-03-16T05:55:27+08:00

    从地址转换总是在检查状态规则之前发生的问题来看,解决方案应该是显而易见的。地址转换需要拆分。

    上面找到的规则的更正版本是:

    add 00050 divert natd ip4 from any to any via wan0 in
    add 00060 check-state
    
    # Talking to myself
    add 00200 allow ip from me to me keep-state
    
    # HTTP
    add 11010 skipto 63000 tcp from any to me http,https setup keep-state
    add 11011 skipto 63000 tcp from any to me6 http,https setup keep-state
    
    # General Network - ICMP
    add 61001 allow icmp from any to any
    
    # Last rule of "normal" traffic
    add 62000 deny ip from any to any
    
    # Only for my outbound and specifically allowed incoming
    add 63000 divert natd ip from any to any via wan0 out
    add 63001 allow ip from any to any
    
    # XXX last rule is deny everything
    
    • 2

相关问题

  • 如何判断 freebsd jail 是否是最新的?

  • 将我的 SFTP 用户监禁到他们的主目录是否公平?

  • 使用 OpenSSH 设置 chrooted SFTP 登录

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