我是 serverfault 的新手,所以请告知我任何不良行为:)
我在 serverfault(和谷歌)中搜索答案,但找不到我的问题的答案(我可以找到部分我需要的答案,但我缺乏将它们结合起来解决我的问题的知识/经验)
问题如下: - 我有一个带有端口 81 的公共服务器,该服务器在公共 IP 地址上可用 - 我有一个带有端口 80 的本地服务器,该服务器不向公众开放 - 我希望用户连接到公共 IP 地址上的端口 81 并到达本地服务器的端口 80(192.168.98.###)
我认为我需要对 iptables 进行一些配置,但这对我来说还很模糊
我尝试了一些答案如何使用 iptables 进行端口转发? 但我遇到了各种各样的错误
一些问题: - 本地服务器是否必须有一些特殊配置?例如,我是否必须将网关设置为公共服务器的 IP 地址? - /proc/sys/net/ipv4/conf/ppp0 不存在,这有问题吗?
防火墙没有阻止任何端口
我完全控制正在运行的公共服务器:
# cat /proc/version
Linux version 2.4.22-1.2115.nptl ([email protected]) (gcc version 3.2.3 20030422 (Red Hat Linux 3.2.3-6)) #1 Wed Oct 29 15:42:51 EST 2003
# iptables --version
iptables v1.2.8
我不知道本地服务器的操作系统,也无法控制其配置
您能向我解释一下我可以使用哪些 iptables 设置,或者任何其他配置吗?
答案1
/proc/sys/net/ipv4/conf/ppp0
首先,如果您的网关上没有运行调制解调器,则您无需处理这个问题。
您要做的第一件事就是在网关上启用转发,如下所示:
# echo '1' > /proc/sys/net/ipv4/conf/eth0/forwarding (if you are running your live IP on eth0)
然后只需像这样转发您的流量:
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:80
# iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
您应该将 192.168.1.2 替换为您机器的内部 IP。此外,将 替换eth0
为您网关上拥有实时 IP 的接口。
最后,正如你之前读到的文章中提到的,你可以使用以下命令检查路由
# ip route
希望这能有所帮助。如果遇到问题,请随时恢复。
此外,请发布您在此过程中遇到的错误。