我是serverfault的新手,所以请通知我任何不良行为:)
我搜索了serverfault(和谷歌)的答案,但找不到我的问题的答案
(我可以找到部分我需要的答案,但我缺乏将它们与我的问题的解决方案相结合的知识/经验)@H_301_4@
问题如下:
– 我有一个公共服务器端口81,可在公共IP地址上找到
– 我有一个端口80的本地服务器,公众无法使用
– 我希望用户连接到公共IP地址上的端口81,并到达本地服务器的端口80(192.168.98.###)@H_301_4@
我想我需要用iptables做一些配置,但这对我来说非常模糊@H_301_4@
我从How can I port forward with iptables?尝试了一些答案
但我遇到了各种各样的错误@H_301_4@
一些问题 :
– 本地服务器是否必须有一些特殊配置?例如,我必须将网关设置为公共服务器的IP地址吗?
– / proc / sys / net / ipv4 / conf / ppp0不存在,是不是有问题?@H_301_4@
防火墙没有阻止端口@H_301_4@
我完全控制正在运行的公共服务器:@H_301_4@
# 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
我不知道本地服务器的操作系统,也无法控制其配置@H_301_4@
你能解释一下我可以使用的iptables设置,还是其他任何配置?@H_301_4@
解决方法
首先,如果您没有在网关上运行调制解调器,则不需要处理此/ proc / sys / net / ipv4 / conf / ppp0.
你需要做的第一件事就是在网关上启用转发,如下所示:@H_301_4@
# echo '1' > /proc/sys/net/ipv4/conf/eth0/forwarding (if you are running your live IP on eth0)
然后像这样简单地转发您的流量:@H_301_4@
# 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的接口.@H_301_4@
最后,正如您之前阅读的帖子中所述,您可以检查路由@H_301_4@
# ip route