看到大家多数都在为一个共享上网问了很多问题, 写这个的目的只是为了方便大家, 不再麻烦斑主每次回答, 抛砖引玉, 大家一起丰富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 |