关于redhat4 LINUX服务器端口映射问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于redhat4 LINUX服务器端口映射问题相关的知识,希望对你有一定的参考价值。

LINUX版本:REDHAT AS4
用途:路由器
外网IP:58.222.1.3
网关:192.168.0.1
需要映射的内网机器:FTP服务器 IP:192.168.0.211 默认端口21

本人刚学LINUX,望高人帮助。
本人只想映射21端口到外网,以至在外网输入外网IP能登陆FTP

在网上找了很久,发现各种说法都有,总叫人混乱,在这里希望真正了解的人指一条明路,本人感激不尽!

能写出详细步骤,因为本人对LINUX内的文件并不熟悉,所以希望大家能写出具体文件的路径以方便本人查找,比如他们所说的修改iptables
这个文件有几个目录有,希望能告诉我修改的是哪个路径的文件

还有他们用2条命令来映射,我不知道那种映射是不是重启了还能生效
所谓的添加个规则具体步骤,还有是否需要加载模块等等

尽量不要复制,因为不了解我说什么的,你复制了我估计也看了也乱~看太多了
把192.168.0.211的网关指向192.168.0.1?
这步怎么做?这么说外网IP都没用到?

谁还能补充一下的么?麻烦详细点步骤,因为我是新手

网上肯定能找到答案的,只是你没找到或不细心。照我说的做吧,我尽量解释清楚。
/etc/init.d/iptables start 启动iptables

初始化iptables,删除之前的规则,
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
允许SSH进入,要不然等下就连不上去了
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
设置默认出入站的规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
载入相应的模块
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
配置默认的转发规则
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
允许内网连接
iptables -A INPUT -i 内网网卡名(比如eth1) -j ACCEPT
启用转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
配置源NAT,允许内网通过主机nat上网,即所谓的网络共享
iptables -t nat -A POSTROUTING -s 内网网卡名 -o 外网网卡名 -j MASQUERADE
把FTP服务器映射到外网
iptables -t nat -A PREROUTING -p tcp -d 58.222.1.3 --dport 21 -j DNAT --to 192.168.0.211:21

结束,别忘了保存
service iptables save
192.168.0.211的网关应该设成这成主机192.168.0.1。这样就行了。
参考技术A 这个贼简单!做个DNAT就可以了…
在RHEL4上输入:iptables -t nat -A PERROUTING -p tcp 21 -j DNAT --to-destination 192.168.0.211

然后把192.168.0.211的网关指向192.168.0.1这样就行了,记得保存下iptables规则,service iptables save

说的已经很详细了,这个还理解不了嘛?“把192.168.0.211的网关指向192.168.0.1?”这个就是改网卡配置文件中的“GATEWAY=192.168.0.1”
就是因为外网的IP在网关处,所以要在网关处写上面那条iptables转发规则,如果你还是不理解,那我也没办法了…
参考技术B 问一下你用的路由器是不是modem ? 是的话直接将linux的内网ip放到 DMZ区.以后想开什么端口,直接用外网都可以访问.

redhat linux在局域网内别的机器可以正常通过ssh连接上,使用外网IP后无法连接

A电脑:操作系统redhat linux5.3 内网IP:192.168.0.99
B电脑:操作系统win7 内网IP:192.168.0.51
外网是固定IP
局域网内使用的是d-link di-7100企业级路由器
对端口21-23做了映射
如图

用B电脑ssh连接A电脑时用内网IP可以连接上
如图

但B电脑ssh连接A电脑时用外网IP就无法连接上
端口映射应该是没问题的。
请问是什么原因啊,该如何处理?

内网连接成功说明ssh服务没有问题,可能的问题是nat、路由或边界访问控制。
请做如下测试:
1、在redhat linux上开启tcpdump进行数据包抓取,具体如下:tcpdump -n "tcp port 22";
2、在外网对redhat nat后的外网ip地址进行ssh连接尝试,此时如果在redhat的tcpdump下有数据包出现,则说明你的nat没有问题。请确认在redhat上是否有正确设置网关。
3、在外网对redhat nat后的外网ip地址进行ssh连接尝试,此时如果在redhat的tcpdump下没有数据包出现,则说明你的nat有问题,或者在路由器上是否存在访问控制策略,请检查。追问

没有抓到包,好像是nat的问题,nat问题我该如何解决呢?

包抓到了,网关我是设置的我路由器的IP,应该是这样设置吧

抓到包了,只有网关到机器的包,不是双向包

追答

你好,如果是NAT的问题,请参考路由器配置手册,确保将内网redhat的IP地址及端口正确映射为外部接口的地址,这种情况建议使用静态NAT配置(在dlink中为一对一规则,刚才看了下官网的手册)。另外请在redhat上配置网关,指向路由器内部接口。
应该就没什么问题了

追问

加了一对一规则了,也不管用,有Q吗?再追加100给你

搞定了,我网关绑了mac,这机器两网卡,放行的网卡的mac和不放行的搞反了

真是折腾死我了,谢谢你了

参考技术A 外网是连接不上内网的,它没有内网的路由,路由只能到内网出口的IP地址。追问

我通过路由端口映射过来了,这个应该是没有问题才是啊

追答

能Ping过来么?还有,路由器有没有设置防火墙?

追问

路由器是没有防火墙的,ping 没有问题

参考技术B 换个ssh端口试试追问

ssh端口咋换?

追答

/etc/sshd_config

追问

换端口没用

以上是关于关于redhat4 LINUX服务器端口映射问题的主要内容,如果未能解决你的问题,请参考以下文章

一行代码实现内网穿透及映射,可以开启映射多个服

Nginx反向代理入门到实践

Linux 或 Windows 上实现端口映射

LINUX服务器的端口映射

iptables的端口映射问题,困绕许多LINUX菜鸟的问题!!!

linux 数据备份(NFS映射方法)