linux – 在本地ip上将公共端口81转发到端口80

我是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

希望这有帮助.如果您遇到问题,请随时回复.

另外,请发布您在此过程中获得的错误.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...