最近架设了一台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 把你的规则保存下来 因为你所有设置的规则再重新启动后都不会被保存 所以你必须来写一个脚本来让他开机运行 所以你就可以用这命令来保存你的规则 然后让他开机自动运行就可以了。
如果你用iptables -A test -p icmp --icmp-type echo-request -i ppp0 -j DROP, 那你肯定能ping通自己,因为你只禁止了从ppp0上来的ping( -i ppp0 ).
试试这个:iptables -A test -p icmp --icmp-type echo-request -j DROP