端口转发在虚拟机上有效,但在主机上无效

端口转发在虚拟机上有效,但在主机上无效

我使用这个 iptables 配置它只是将 2121 的连接重定向到端口 21(用于以用户而不是 root 身份运行 ftp)

  *nat
    :PREROUTING ACCEPT [200:39210]
    :INPUT ACCEPT [6:360]
    :OUTPUT ACCEPT [21:1323]
    :POSTROUTING ACCEPT [21:1323]
    -A PREROUTING -i eth0 -p tcp -m tcp --dport 2121 -j DNAT --to-destination 192.168.0.2:21
    COMMIT
    # Completed on Sun Jan 24 19:17:55 2016
    # Generated by iptables-save v1.4.20 on Sun Jan 24 19:17:55 2016
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [2996:188699]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 2121 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -p icmp -j ACCEPT
    -A FORWARD -i lo -j ACCEPT
    -A FORWARD -d 192.168.0.2/32 -i eth0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    # Completed on Sun Jan 24 19:17:55 2016

已启用 ip4 转发 此配置在两个虚拟机上运行良好:一个 slackware,一个 centos6 但我的装有 slackware 的主机不行。我可以检查什么?我忘了:服务器 ftp 在 chroot 上

答案1

终于找到了解决方案。ftp 在 chroot 上,并且是纯 ftpd,此行

Bind                      10.2.2.1,2121

不要在 chroot 上工作,而是在 chroot 之外工作

这行

Bind                      *,2121

在 chroot 中完美运行

我使用这个防火墙脚本

iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT  -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT  -p tcp --sport 2121 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 2121 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -m tcp -p tcp --dport 21 -j REDIRECT --to-port 2121
iptables -t nat -A OUTPUT -s 192.168.0.0/24 -m tcp -p tcp -o lo --dport 21 -j REDIRECT --to-port 2121

相关内容