文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用 iptables 做 路由、 NAT、 防火墙

使用 iptables 做 路由、 NAT、 防火墙

时间:2006-10-24  来源:net_robber

iptables 是个 功能强大的东西。
在你不是特别强调速度,或者没有足够的资金购买硬件设备的时候,他是一个不错的选择。

系统Fedora Core 5,

要求,路3个网段间由转发和NAT影射

A网段为公网,ip:208.214.277.0/24
B网段为内网,ip:192.168.0.0/24 其对公网出口 192.168.0.1
C网段为内网。ip:10.0.0.0/8

A网段不受我控制。B网段有自己的出口,即GateWay,所以其路由表中没有C网段,就是说,B发往C的数据不能由192.168.0.1自动转发至10.0.0.0/8。同时,C发往B的数据,B的返回数据包因为默认路由是192.168.0.1而不能正常返回C。

不过还好,我们不要求B访问C,只要C能访问B就可以了。
这个可以做到,没有问题

开始配置

网卡配置:
eth0:
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:16:17:6B:46:76
IPADDR=192.168.0.3
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes

eth1:
# Intel Corporation 82557/8/9 [Ethernet Pro 100]
DEVICE=eth1
BOOTPROTO=static
BROADCAST=208.214.277.255
HWADDR=00:02:B3:CD:B6:A6
IPADDR=208.214.277.75
NETMASK=255.255.255.192
NETWORK=208.214.277.0
ONBOOT=yes

eth2:
# Intel Corporation 82557/8/9 [Ethernet Pro 100]
DEVICE=eth2
BOOTPROTO=static
BROADCAST=10.255.255.255
HWADDR=00:02:B3:CD:B1:1A
IPADDR=10.0.0.1
NETMASK=255.0.0.0
NETWORK=10.0.0.0
ONBOOT=yes

下面配置防火墙规则:
这个我做了个脚本:
# iptables configer
# project by net_robber
# alpha 0.1
# finished on 2006/08/21

# /bin/bash

# enable ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush the rules
iptables -t filter -F
iptables -t nat -F

# config the table filter
iptables -t filter -F
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -i eth0 -s 192.168.0.2 -j ACCEPT
iptables -t filter -A INPUT -i eth1 -p tcp -m multiport --dports 22 -d 208.214.277.75 -j DROP
iptables -t filter -A INPUT -i eth1 -j DROP
#iptables -t filter -A INPUT -i eth2 -p tcp -m multiport --dports 21,22 -j ACCEPT
iptables -t filter -A INPUT -i eth2 -j DROP

iptables -t filter -A FORWARD -i eth0 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -j ACCEPT
iptables -t filter -A FORWARD -i eth2 -j ACCEPT

iptables -t filter -A INPUT -j DROP
iptables -t filter -P INPUT DROP

# config  the table nat
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT --to 208.214.277.75
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -d 192.168.0.0/23 -j SNAT --to 192.168.0.3
iptables -t nat -A POSTROUTING -s 192.168.0.0/23 -d 10.0.0.0/8 -j SNAT --to 10.0.0.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/23 -j SNAT --to 208.214.277.75
iptables -t nat -A POSTROUTING -s 192.168.0.0/23 -d 192.168.0.0/23 -j SNAT --to 192.168.0.3
iptables -t nat -A PREROUTING -i eth1 -d 208.214.277.75 -p tcp -m multiport --dport 25,80 -j DNAT --to 10.0.0.1
iptables -t nat -A PREROUTING -i eth2 -d 208.214.277.75 -p tcp -m multiport --dport 25,80,110 -j DNAT --to 10.0.0.1

这样就可以了,除了我的机器,谁都不能访问者太防火墙,外网更别想

按照上面的配置,留下了如下问题

1、使用yum -y update的时候,无法正常升级,
  提示如下:
Error: Cannot find a valid baseurl for repo: core

问题分析如下:
yum服务器传送过来的数据端口不确定,造成我无法打开固定端口接收数据。
解决方法,编写脚本
update.sh

# /bin/bash

echo 'clean the iptable rules whitch deny the yum update'
iptables -t filter -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT

echo 'now updating, please waiting!'
yum -y update

echo 'finished the updating!'
iptables -t filter -D INPUT -m state --state ESTABLISHED -j ACCEPT

2、ftp客户端无法通过PASIV模式连接到这台服务器
问题分析:
由于PASIV模式,服务器制定接收数据端口随机,无法固定分配
解决办法,编写脚本
ftpd.sh

# /bin/bash

iptables -t filter -I INPUT 1 -m state --state RELATED -j ACCEPT

service vsftpd restart

至此,问题解决,如果觉得有必要,可以把这两个脚本和之前的那个脚本,共三个脚本合并。

其实,通常情况下
iptables -t filter -D INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -I INPUT 1 -m state --state RELATED -j ACCEPT
和两行都是被合并成一行的。

iptables -t filter -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
相关阅读 更多 +
排行榜 更多 +
学霸校园模拟(樱花季)下载

学霸校园模拟(樱花季)下载

模拟经营 下载
逐粤之旅

逐粤之旅

飞行射击 下载
机器人突击队最新版

机器人突击队最新版

飞行射击 下载