DD-WRT内置的防火墙只有简单的几个控制, 其实DD-WRT内置的iptables防火墙可以设置定制出非常严厉的的防火墙规则.
但是iptables规则对一般人来说并不简单, 而且几乎每台PC上都已经安装了个人防火墙, 所以路由上的防火墙主要用来防护一些比较容易可能影响到网络的威胁即可, 这样一来就不会太过于影响路由器的性能, 毕竟DD-WRT的防火墙也会消耗路由器的CPU和内存.
我们可以用简单的脚本命令来实现DD-WRT上的DoS保护, 过载保护, 中间人攻击(MITMA, man in the middle attack), PING攻击等主要的防火墙功能, 这些不需要任何特定参数和IP规则, 对于家庭网络的保护{zh0}不过了.
命令部分来之DDWRT官方Wiki,
符号”#”后的内容为注释, 实际使用时可以把”#”后面的内容整句删除.
复制下面的命令, 粘贴到DD-WRT的启动命令上即可.
- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
- echo 1 > /proc/sys/net/ipv4/ip_forward
-
- # 下面两个注释掉的参数会影响eMule等软件, 请自行调试后决定是否开启.
- #echo 1024 > /proc/sys/net/ipv4/ipfrag_high_thresh
- #echo 512 > /proc/sys/net/ipv4/ipfrag_low_thresh
- echo 64000 > /proc/sys/net/ipv4/ipfrag_high_thresh
- echo 48000 > /proc/sys/net/ipv4/ipfrag_low_thresh
-
- echo 10 > /proc/sys/net/ipv4/ipfrag_time
- echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
- echo 1 > /proc/sys/net/ipv4/tcp_syncookies
- echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_source_route
- echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_redirects
- echo 1 > /proc/sys/net/ipv4/conf/eth1/log_martians
- echo 10 > /proc/sys/net/ipv4/neigh/eth1/locktime
- echo 0 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
- echo 50 > /proc/sys/net/ipv4/neigh/eth1/gc_stale_time
-
- #
- # 下面的命令确保提供{zh1}保护和对于"中间人"MITM攻击提供适当的防御
- #
-
- echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects
- echo 0 > /proc/sys/net/ipv4/conf/eth1/secure_redirects
- echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
- echo 5 > /proc/sys/net/ipv4/igmp_max_memberships
- echo 2 > /proc/sys/net/ipv4/igmp_max_msf
- echo 1024 > /proc/sys/net/ipv4/tcp_max_orphans
- echo 2 > /proc/sys/net/ipv4/tcp_syn_retries
- echo 2 > /proc/sys/net/ipv4/tcp_synack_retries
- echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
- echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
- echo 0 > /proc/sys/net/ipv4/route/redirect_number
- echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
- echo 1 > /proc/sys/net/ipv4/conf/eth1/rp_filter
- echo 1 > /proc/sys/net/ipv4/tcp_syncookies
- echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
- echo 61 > /proc/sys/net/ipv4/ip_default_ttl
-
- # 调整超时防御DoS攻击
- echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time
- echo "0" > /proc/sys/net/ipv4/tcp_window_scaling
- echo "0" > /proc/sys/net/ipv4/tcp_sack
-
- # 类似Windows XP的包检查防火墙功能
- echo 4096 87380 4194304 >/proc/sys/net/ipv4/tcp_rmem
- echo 4096 87380 4194304 >/proc/sys/net/ipv4/tcp_wmem
-
- # 检查网络超载 (详细的拥堵通知)
- echo 1 > /proc/sys/net/ipv4/tcp_ecn
-
- # 修改外出流量的端口范围
- echo "30000 60000" > /proc/sys/net/ipv4/ip_local_port_range
测试DD-WRT Wiki原代码中的LED提示指示没有成功, 原代码上的一些可有可无的命令已经去除.
直接添加到DD-WRT启动命令后路由应该会自动重启, 测试是否成功的最简单方式就是直接Ping路由的IP地址, 返回的是超时或者无法连接就表示已经成功.