找回密码
 注册
查看: 2881|回复: 6

iptables 简易设置实例(内网共享, 内网映射等)

[复制链接]
发表于 2003-2-5 06:26:29 | 显示全部楼层 |阅读模式
看到大家多数都在为一个共享上网问了很多问题, 写这个的目的只是为了方便大家, 不再麻烦斑主每次回答, 抛砖引玉, 大家一起丰富iptables的知识

以下都是我再自己服务器上使用的设置, 大家可以对照参考设置
服务器配置为3块网卡, eth0,eth1为联接互联网,eth2为联结内部网络
为了方便运行, 我把配置文件写成sh, 一共是3个文件
主文件 /etc/nat
放火墙1 /etc/nat_kill
放火墙2 /etc/nat_killcs

#!/bin/sh
PATH=$PATH:/usr/sbin:/sbin
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -P FORWARD DROP
# 以上清除原有的设置
#
insmod ip_nat_ftp
insmod ip_conntrack_ftp
# 打开ftp PASV模式的端口映射
#
# Kill SomeOne
# /etc/nat_killcs &
# /etc/nat_kill &
# 这是调用放火墙的设置
#
# FTP Server
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 1.2.3.5 --dport 21 -j DROP
# 禁止互联网的21端口联接
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 1.2.3.4 --dport 21 -j DROP
# 禁止互联网的21端口联接
#
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 1.2.3.4 --dport 5918 -j DNAT --to 192.168.0.2:21
# 把 5918 端口映射到内网的一台服务器的FTP服务
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 1.2.3.4 --dport 1024:1073 -j DNAT --to 192.168.0.2
# 映射FTP允许的PASV端口
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.2 --sport 21 -j ACCEPT
# 允许 192.168.0.2 的FTP输入输出
iptables -A FORWARD -p tcp -d 192.168.0.117 --sport 21 -j ACCEPT
# 允许我的机器可以FTP到外部 (你可以自己设置)
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 1024:1073 -j ACCEPT
# 允许192.168.0.2 的PASV输入输出
#
# Kill LAN FTP Out
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --sport 21 -j DROP
# 禁止所有其他机器的FTP
#
# Normal NAT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 1.2.3.4
# 允许内网通过网关转发, 到这里内网就可以上网了
#
# 有些单位有BQQ的话, 可以接着以下设置
# BQQ Server
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 1.2.3.4 --dport 8000:8002 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -i eth1 -p udp -d 1.2.3.4 --dport 8000:8002 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 1.2.3.4 --dport 8100:8200 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -i eth1 -p udp -d 1.2.3.4 --dport 8100:8200 -j DNAT --to 192.168.0.2
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 8000:8002 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.0.2 --dport 8000:8002 -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 8100:8200 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.0.2 --dport 8100:8200 -j ACCEPT

以上的 1.2.3.4 , 1.2.3.5 是公网IP, 自己套一下就可以了

简易放火墙 (/etc/nat_kill &)部分内容
#
#!/bin/sh
PATH=$PATH:/usr/sbin:/sbin
# Kill SomeOne
#
# 211.162.151.0
iptables -A INPUT -s 211.162.151.0/24 -j DROP
iptables -A FORWARD -s 211.162.151.0/24 -j DROP
# 211.162.95.0
iptables -A INPUT -s 211.162.95.0/24 -j DROP
iptables -A FORWARD -s 211.162.95.0/24 -j DROP
这样就封掉2个C段了, 慎用慎用

有些公司不允许玩游戏, 那就接着 /etc/nat_killcs & 部分内容
#!/bin/sh
PATH=$PATH:/usr/sbin:/sbin
# Kill CS & Chinagames Port
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 2000:2002 -j DROP
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 3004 -j DROP
iptables -A FORWARD -p tcp -d 192.168.0.0/24 --dport 27005:27020 -j DROP
iptables -A FORWARD -p udp -d 192.168.0.0/24 --dport 2000:2002 -j DROP
iptables -A FORWARD -p udp -d 192.168.0.0/24 --dport 3004 -j DROP
iptables -A FORWARD -p udp -d 192.168.0.0/24 --dport 27005:27020 -j DROP
发表于 2005-3-17 02:35:06 | 显示全部楼层

一定要两个网卡么?

楼主!一定要两个网卡么?
回复

使用道具 举报

发表于 2005-3-17 12:58:08 | 显示全部楼层
单个网卡也可以的。
回复

使用道具 举报

发表于 2005-3-17 17:18:51 | 显示全部楼层
顶置!!
回复

使用道具 举报

发表于 2005-3-18 08:19:35 | 显示全部楼层
好文呐,另外问一下,电信的Lan登录在Linux下用什么程序的。
回复

使用道具 举报

发表于 2006-6-30 20:02:15 | 显示全部楼层
想问一下楼主
是不是每次开机都要运行呢
回复

使用道具 举报

发表于 2006-7-3 12:00:13 | 显示全部楼层

请问楼主

请问楼主你的iptables的默认策略policy是什么,我怎么没有看到呢?
最好能把你的网络结构图说明一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-7-21 02:32 , Processed in 0.030531 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表