Linux iptables 做 路由、 NAT、 防火墙

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

 

qq交流群 42776821

文章转载至 思科技术论坛 无 忧网客联盟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值