通过简单路由器获取 IP 表

通过简单路由器获取 IP 表

我一直在为自己设置路由器,主要用于 dns+dhcp 功能(与许多虚拟机混在一起)。我有两个接口 eth0 和 eth1。eth0 可以看作是 WAN,eth1 是内部网络。

这是我当前的 IPtables 规则,它在启动时运行,并且运行良好,只是转发而已。

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 10.3.193.185


iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT


# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

这是我已经尝试添加但不起作用的规则。

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 10.3.193.185

我还有多个 Web(端口 80)服务器,那么我该如何进行端口转发?

答案1

如果您只是想将到达路由器端口 80 的流量转发到某个内部服务器的端口 80,则需要以下一系列预路由和转发规则才能使端口转发正常工作。

iptables -t nat -A PREROUTING -p tcp -i eth0  --dport 80 --sport 1024:65535 -j DNAT --to 10.3.193.185:80

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.3.193.185 --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT

iptables -A FORWARD  -o eth0 -m state  --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i eth0 -m state  --state ESTABLISHED,RELATED -j ACCEPT

相关内容