iptables 端口转发不起作用

iptables 端口转发不起作用

我有一台配置为路由器的服务器(Debian 7 Stable)。eth0 连接到我的电缆调制解调器,eth1 连接到 24 端口交换机。DHCP、DNS、路由、流量都正常工作。我似乎唯一无法正常工作的是端口转发。我想将流量从端口 65010 转发到 172.16.254.10,但超时了。以下是我编写的脚本:

#!/bin/bash
# init

## Flush current configuration:
iptables -F
iptables -t nat -F
iptables -t mangle -F

## Delete current chains:
iptables -X
iptables -t nat -X
iptables -t mangle -X

## Set policy
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

## Allow routing between eth0 and eth1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT

## Allow internal SSH:
iptables -A INPUT -s 172.16.254.0/24 -m state --state NEW \
        -p tcp -m multiport --dports 65001,65010 -j ACCEPT

## Allow external SSH:
iptables -A INPUT -p tcp -m multiport --dports 65001,65010 -j ACCEPT

## Allow port forwarding for SSH:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 65010 \
                      -j DNAT --to-destination 172.16.254.10

## Required for internal host name resolution to function:
iptables -I INPUT -s 172.16.254.0/24 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -s 172.16.254.0/24 -p tcp --dport 53 -j ACCEPT

## Required for Samba to function:
iptables -A INPUT -s 172.16.254.0/24 -m state --state NEW -p tcp \
                   -m multiport --dports 137,138,139,445 -j ACCEPT

iptables-save > /etc/iptables.rules

答案1

尝试使用:

iptables -A FORWARD -i eth0 -p tcp --dport 65010 -d 172.16.254.10 -j ACCEPT

另一方面,您没有设置任何默认策略来 DROP,也没有在任何链中添加任何“-j DROP”规则来捕获不匹配的流量,因此一切都是允许的。

最后,您可能需要在 DNAT 规则中添加目标的端口号:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 65010 -j DNAT \
                                --to-destination 172.16.254.10:65010

尝试运行 tcpdump 或 wireshark 之类的程序,以确保数据包正确转发到内部目的地。

相关内容