使用iptables将内网ftp服务映射到其他内网服务器上


iptables一般的只需要关注两个表,一个是nat表,一个是filter表,其他表暂时用不到,然后nat表里有三个链,filter表里有三个链,总结两个表,五个链

入站数据流向:数据包到达防火墙后首先被PREROUTING链处理(是否修改数据包地址等),然后进行路由选择(判断数据包发往何处),如果数据包的目标地址是防火墙本机(如:Internet用户访问网关的Web服务端口),那么内核将其传递给INPUT链进行处理(决定是否允许通过等)。

转发数据流向:来自外界的数据包到达防火墙后首先被PREROUTTING链处理,然后再进行路由选择;如果数据包的目标地址是其他的外部地址(如局域网用户通过网关访问QQ服务器),则内核将其传递给FORWARD链进行处理(允许转发,拦截,丢弃),最后交给POSTROUTING链(是否修改数据包的地址等)进行处理。

出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务时),首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链(是否修改数据包的地址等)进行处理。

下面实验下看看:
环境说明:vmware下两台虚拟机,
192.168.255.129上搭建了ftp服务,被动模式,21为控制端口,1023至65535随机出现数据端口
192.168.255.131作为NAT服务器
目的将129的ftp服务其映射到192.168.255.131上的指定端口
准备工作,使129的网关地址为131
删除默认网关地址 : route delete default gw 网关ip(我这里是192.168.255.2)
新增默认网关地址: route add default gw 192.168.255.131

1.首先确保一点,192.168.255.129的网关地址为192.168.255.131,否则129有多个出口,二者无法关联映射
131要做的工作:去掉firewalld服务,关闭selinux,启用iptables服务,129无所谓,关闭firewalld和selinux就行了
systemctl stop firewald.service && sudo systemctl disable firewald.service
yum install iptables-services iptables-devel -y
systemctl enable iptables.service && sudo systemctl start iptables.service

2.开启131的网卡转发功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p

3.131上设置允许255过来的网段进行地址伪装,也就是129到达之后,可以用131为源地址进行"外网”的访问,(要不要这条配置无所谓,只是为了让129可以上外网)
iptables -t nat -A POSTROUTING -s 192.168.255.0/24 -j MASQUERADE

4.131上设置DNAT,将去往166端口的请求转发到129的21端口,131上可以不用开166端口,他自己会转发,理论上166端口的包到达pre链就直接转给了129的21端口,根本没有到达131自己的INPUT链,所以不需要放行131INPUT链的166端口
iptables -t nat -I PREROUTING -p tcp -d 192.168.255.131 --dport 166 -j DNAT --to 192.168.255.129:21

5.131上开启ftp内核模块追踪相关数据端口
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
lsmod | grep ftp 有东西表示成功

6.接下来访问测试看看?成功了

7.通信详细流程
客户端访问192.168.255.131:166,这时候先经过131的prerouting链,判断是DNAT规则,将目的地址修改为192.168.255.129:21,经由路由选择,判断不是进入本机的数据包,而是转发包,传递给forward链进行处理(这里没有规则,默认许可),经由postrouting链(这里源ip是客户端ip仍旧没变,只允许255网段的修改源ip),最后转发到129,129处理结束之后(没开iptables),源ip为129,目的ip为客户端ip,判断目的ip不是跟自己一个网段,交给网关地址,129的回包直接到达131,131上经由PREROUTING链(这里直接通过),根据路由选择,判断不是到本机的,内核将其传递给FORWARD链进行处理(默认允许),再经由POSTROUTING链将源IP也就是129,修改为131的外网口地址(如果有外网口的话,这里就是131,通过iptables可以指定,如果是外网口就必须要指定SNAT,如果像这里,可以不用指定SNAT),最后源ip是131,目的地址客户端ip,返回给客户端。

原文地址:http://blog.51cto.com/9237101/2327394

时间: 2024-10-14 01:44:42

使用iptables将内网ftp服务映射到其他内网服务器上的相关文章

虚拟机NAT模式下外网访问内网FTP服务

宿主主机地址  192.168.1.106 VMnet8网络虚拟网卡地址 192.168.137.1 虚拟机地址 192.168.137.99 1,外网设备需要访问虚拟机FTP服务 首先在虚拟机上安装FTP服务(直接RPM安装vsftpd RPM安装包即可),并启用FTP服务 如果需要外网能访问这台虚拟机上的FTP服务,那么需要开启虚拟机的端口映射功能 Workstation虚拟机上操作步骤如下 编辑--虚拟网络编辑器-- 首先找个端口映射到咱们的虚拟机FTP服务器的21端口上 但是这个时候问题

iptables(4)开放被动模式FTP服务

开放被动模式FTP服务: (1)装载ftp追踪时的专用的模块: #modprobe nf_conntrack_ftp (2)放行请求报文: 命令连接:NEW,ESTABLISHED 数据连接:RELATED,ESTABLISHED # iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --stateNEW,ESTABLISHED -j ACCEPT # iptables -A INPUT -d LocalIP -p tcp -m st

2018-11-16 打算把胶州的项目升级成微服务,不过还是在自己服务器上跑一下看看情况吧先

组件: 尤里卡:注册中心 负责服务发现 ribbon:挂载在每个微服务上作为客户端负载均衡 hystrix:熔断器暂时先不用 zuul:    网关先实现个看看有什么不同 config: 懒人必备,中心和配置,必须搞一个 嗯 先这样 原文地址:https://www.cnblogs.com/qd-neolithic/p/9968254.html

使用ngrok将本地Web服务映射到外网

为什么要使用ngrok? 作为一个Web开发者,我们有时候会需要临时地将一个本地的Web网站部署到外网,以供它人体验评价或协助调试等等,通常我们会这么做: 找到一台运行于外网的Web服务器 服务器上有网站所需要的环境,否则自行搭建 将网站部署到服务器上 调试结束后,再将网站从服务器上删除 只不过是想向朋友展示一下网站而已,要不要这么麻烦,累感不爱╰(`□′)╯ 有了ngrok之后,世界是如此的美好 首先注册并下载ngrok,得到一串授权码 运行命令ngrok -authtoken 你的授权码 8

FTP 服务搭建

FTP 服务搭建 最近一直偷懒,没有上传博客,最近工作中正好要搭建FTP,来写个博客吧.同志还需努力啊,天天犯懒以后只能去吃土了. 首先介绍一下我的实验环境:CentOS6.7,内核2.6 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# uname -a Linux CentOS-6 2.6.32-573.el6.x86_64 #1 SMP Thu J

ubuntu 开启ftp服务

一. 检查是否已安装 vsftpd vsftpd -v 二. 安装 vsftpd apt-get install vsftpd 三.  检查是否已安装好 vsftpd vsftpd -v systemctl status vsftpd.service 四.先查看iptables设置: #iptables -nL 防护墙方法: https://i.cnblogs.com/EditPosts.aspx?opt=1 五. 查看端口情况 iptables -nL 六. 搭建FTP服务 加载ip_conn

如何在Windows Server 2008 R2下搭建FTP服务

在Windows Server 2008 R2下搭建FTP服务,供客户端读取和上传文件 百度经验:jingyan.baidu.com 工具/原料 Windows Server 2008 R2 百度经验:jingyan.baidu.com 方法/步骤 1 安装FTP服务 开始-->管理工具-->服务器管理器 步骤阅读 2 安装IIS/FTP角色 打开服务器管理器,找到添加角色,然后点击,弹出添加角色对话框,选择下一步 步骤阅读 3 选择Web服务器(IIS),然后选择FTP服务,直到安装完成.

vsftpd实现的FTP服务

练习一:准备DHCP环境 虚拟机1 dhcpsvr VMnet1  eth0192.168.1.254/24 VMnet4 eth1 192.168.4.254/24 虚拟机2 pc205 VMnet4 ,IP设为 DHCP自动获取 练习二:搭建简单DHCP服务器 Vim 编辑/etc/dhcpd.conf设置要分配的网段.网关.地址范围等 重启一台客户端将网络连接设置成与服务器一致,重启客户机的网络服务,查看客户端的IP地址 练习三:保留地址 1.    服务器调整 Vim 编辑/etc/dh

公网访问内网被动模式FTP服务

参考文章 https://www.cnblogs.com/nmap/p/6706550.html 被动模式端口设置不对,防火墙/路由器上的被动模式端口要和FTP服务器上设置的一致. 示例 内网FTP服务器IP 10.0.1.12,控制端口是默认的21端口,数据传输模式是被动模式 防火墙IP         202.101.102.35 控制端口 映射222.101.102.35:50021-->10.0.1.12:21 被动模式端口 映射222.101.102.35:50022-->10.0.