博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables在网络中的两个经典应用(转)
阅读量:2449 次
发布时间:2019-05-10

本文共 3292 字,大约阅读时间需要 10 分钟。

iptables在网络中的两个经典应用(转)[@more@]

a.端口转发:

在详述端口转发之前,先讲一下我日前遇到的一件事情。

本人是搞测试的,有一厂家拿了一个服务器软件叫我测试。基于win2k的,端口号为881,服务器直接连接外部网络,客户端通过服

器ip来访问,而他们没有基于linux的服务器软件,照他们意思就必须将服务器换成windows的。作为一个linux爱好者,我想大家

明白这种痛苦。我翻了一下资料,发现iptables的端口转发功能可以解决,折腾了一下午,终于完成任务。下面将我的方法讲一下:

思想:利用端口转发,当服务器接收到881端口请求以后,将其转到 10.10.2.200:881上,10.10.2.200再将数据返回给请求连接

Eth0:连接ADSL,即ppp0接口

Eth1:连接内部网络,ip为10.10.1.1

10.10.2.200为win2k服务器,其端口881提供网络服务。

iptbles脚本:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 881 -j DNAT --to-destination 10.10.2.200:881 ;将881请求

发至10.10.2.00:881端口

iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.200 -p tcp -m tcp --dport 881 -j SNAT --to-source

10.10.1.1 ;返回a.b.b.d时数据源来自同一子网,就将其源地址更改为10.10.1.1,从eth0发出,并在连接跟踪表中查出a.b.c.d

从ppp0进来的,又由ppp0将此数据发出。

当然不要忘了加一条允许881端口访问的语句。

iptables –A INPUT –p tcp –dport 881 –i ppp0 –j ACCEPT

可不可把服务器放在局域内,用端口转发来实现呢?答案当然是肯定的,既然能把881端口转发,那么21,80这些个端口更不在话

,而且很多服务器软件都可以自定义端口,那就在得玩了,只要有合适的端口,即使给局域网每一个用户开一个ftp服务器也是可

的。你想要实现什么服务都可以,当然是基于端口转发的。

局域网内10.10.2.101是win2k,提供www服务,端口为800

通过服务器http://serverip:800 进行访问。

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 800 -j DNAT --to-destination 10.10.2.101:800

iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.101 -p tcp -m tcp --dport 800 -j SNAT --to-source

10.10.1.1

iptables –A INPUT –p tcp –dport 800 –i ppp0 –j ACCEPT

由于是基于端口转发实现的,所以服务器上只需装个iptables来转发数据就行了,一切服务由内部服务器完成,这样的话,我

linux服务器才真正的算是个防火墙。

b.IPTABLES防火墙使用经验一谈

最近架设了一台LINUX的小型服务器 因为需要把LINUX的机子作为软路由器来使用 所以把使用的一些经验谈一下。

iptables的功能十分的强大 例如IP转发和伪装 防御DoS,扫描和嗅探试的攻击等等 在这里就不阐述了

我的系统环境: redhat 7.2

adsl 2m

8139fast 网卡

1:linux如何所以软路由功能:

说到这里 大家可能会想 只要在/etc/rc.d/rc.local加上cat 1 > /proc/sys/net/ipv4/ip_forward就可以了 让linux具

ip_forward的功能 但你会发现 就算这样设置你局域网内的其他电脑还是不能共享上网 这是为什么 因为当你只有一个公网的ip

候 你就必须用到iptables的IP伪装功能 把IP的伪装成你公网的IP 那怎么实现呢 你可以这样

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 这样就可以把你所以出去的IP地址伪装成ppp0的IP地址(因为我

ADSL 如有不同可以修改)

2:我不想开放我的端口 但我要在我的电脑上启用http服务 并对外服务:

因为你不想开放除了80以外的端口 你可以这样

iptables –P INPUT –j DROP 我们用-P来拦截全部的通信

然后在来允许哪些端口可以被使用你可以这样写:

iptables –A INPUT –p tcp –dport 80 –j ACCEPT

你可以适当的按照这样的格式来添加自己想开放的端口 当然如果你觉得这样不是很好的管理你也可以新建一个iptables表 你可以

样做

iptables –N test (新建一个test表)

iptables –A test DROP

iptables –A test –p tcp –dport 80 –j ACCEPT(允许80端口被访问)

iptables –A INPUT –j test

iptables –A OUTPUT –j test

iptables –A FORWARD –j test(这3条的意思指让INPUT OUTPUT FORWARD都按照test的设置)

3我想在我内网的电脑上架设ftp服务 我该怎么做:

这就又要用到iptables 的又一个强大的功能端口映射了

你可以这样iptables -t nat -A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination

192.168.0.6:21

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.6 -p tcp -m tcp --

dport 25-j SNAT --to-source 192.168.0.1

这写是XCHEN兄给我的指导 再这里先谢谢了 上面2句话的意思是把服务器的25端口映射到192.168.0.6这台电脑上

4:我不想让人家可以PING到我

这大概是做防火墙用到最多的一种了 你可以在iptables写这句话

iptables -A INPUT -p icmp --icmp-type echo-request -i ppp0 -j DROP

如果你前面是新建了一个新的test表 那也可以这样写iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j

DROP

这句话就是不允许人家PING我 因为ping用到的是icmp协议 因为icmp没有端口可言 所以也不需要指定端口了

好了 这就是iptables的几种比较基本的用法

这里在介绍几iptbales常用的一些命令

iptables –F 清空所有的iptables的规则设置

/sbin/iptables-save > iptables – save 把你的规则保存下来 因为你所有设置的规则再重新启动后都不会被保存 所以你必

来写一个脚本来让他开机运行 所以你就可以用这命令来保存你的规则 然后让他开机自动运行就可以了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-945984/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-945984/

你可能感兴趣的文章
hue功能_Philips Hue的“新实验室”部分中的最佳实验功能
查看>>
outlook 禁用不安全_如何在Outlook中禁用删除确认对话框
查看>>
找到丢失的磁贴跟踪器后如何获取通知
查看>>
android 更改软键盘_如何在Android上更改Google键盘的主题
查看>>
kodi 缓存文件夹_如何将Kodi图稿与视频存储在同一文件夹中
查看>>
windows隐藏磁盘_如何在Windows的磁盘清理工具中启用隐藏选项
查看>>
如何在Linux或macOS终端中使用Bash历史记录
查看>>
photos设置成中文_如何在OS X的Photos中设置和使用扩展程序
查看>>
大剧院自助签证_如果您的项目是《剧院》,请使用演员
查看>>
windows终端终端_Windows终端介绍
查看>>
小额免密_如何在您的应用中进行小额付款
查看>>
用开源代码如何建立网站_建立全球开源法律网络
查看>>
c&c++语言参考手册_C ++值类别快速参考:第2部分
查看>>
javascript优化_优化性能的十大JavaScript技巧
查看>>
传统网络面临问题_我们每天都面临的最流行的计算机问题
查看>>
aws cmake .._如何将Hyperledger Fabric 1.4部署到AWS
查看>>
unity 场景优化_Unity优化:您的场景层次正在抢劫您
查看>>
如何制作电子邮件而不是一团糟:实用技巧
查看>>
px em rem区别_px,em,rem,%之间有什么区别? 答案在这里
查看>>
pvs-stdio ue4_云中的PVS-Studio:Azure DevOps
查看>>