我是serverfault的新手,所以请通知我任何不良行为:)
我搜索了serverfault(和谷歌)的答案,但找不到我的问题的答案
(我可以找到部分我需要的答案,但我缺乏将它们与我的问题的解决方案相结合的知识/经验)
问题如下:
– 我有一个公共服务器端口81,可在公共IP地址上找到
– 我有一个端口80的本地服务器,公众无法使用
– 我希望用户连接到公共IP地址上的端口81,并到达本地服务器的端口80(192.168.98.###)
我想我需要用iptables做一些配置,但这对我来说非常模糊
我从How can I port forward with iptables?尝试了一些答案
但我遇到了各种各样的错误
一些问题 :
– 本地服务器是否必须有一些特殊配置?例如,我必须将网关设置为公共服务器的IP地址吗?
– / proc / sys / net / ipv4 / conf / ppp0不存在,是不是有问题?
防火墙没有阻止端口
我完全控制正在运行的公共服务器:
# cat /proc/version Linux version 2.4.22-1.2115.nptl (bhcompile@daffy.perf.redhat.com) (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设置,还是其他任何配置?
解决方法
首先,如果您没有在网关上运行调制解调器,则不需要处理此/ 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
希望这有帮助.如果您遇到问题,请随时回复.
另外,请发布您在此过程中获得的错误.