海运的博客

Linux/Openwrt策略路由配置使用

发布时间:September 8, 2012 // 分类:OpenWrt // No Comments

Linux多可支持255个路由表,查看当前路由表:

ip rule ls
0:    from all lookup local 
32766:    from all lookup main 
32767:    from all lookup default 

根据源IP或目标IP选择路由表:

#新建路由表ID与名称映射
echo '252 haiyun' >> /etc/iproute2/rt_tables 
#设置源ip走特定路由表
ip rule add from 192.168.1.5 table haiyun pref 32764
#路由表默认路由
ip route add default via 192.168.1.2 dev pppoe-wan2 table haiyun
#刷新路由缓存
ip route flush cache

基于iptables标记选择路由表:

#iptables标记数据包
iptables -t mangle -APREROUTING -p udp --dport 53 -j MARK --set-mark 20
#iptables标记的数据包走特定路由表
ip rule add fwmark 20 table haiyun pref 32763
#路由表默认路由
ip route add default via 192.168.1.2 dev pppoe-wan2 table haiyun

查看当前路由表规则:

ip rule ls
0:    from all lookup local 
32764:    from 192.168.1.5 lookup haiyun
32765:    from all lookup main 
32766:    from all lookup main 
32767:    from all lookup default 

查看路由表haiyun下路由项:

ip route ls table haiyun
default via 192.168.1.2 dev eth1 

Iptables模块TTL应用禁止二级路由及禁止tracert被跟踪

发布时间:August 5, 2012 // 分类:Iptables // No Comments

TTL即Time To Live,用来描述数据包的生存时间,防止数据包在互联网上一直游荡,每过一个路由减1,TTL为1时丢弃数据包并返回不可达信息。
Iptables TTL模块可以修改收到、发送数据的TTL值,这模块很有趣,可以实现很多妙用。
TTL使用参数:

https://www.haiyun.me
--ttl-set #设置TTL的值
--ttl-dec #设置TTL减去的值
--ttl-inc #设置TTL增加的值

应用示例:
禁止被tracert跟踪到,traceroute跟踪时首先向目标发送TTL为1的IP数据,路由收到后丢弃数据包并返回不可达信息,以此递增直到目标主机为止。

iptables -A INPUT -m ttl --ttl-eq 1 -j DROP
#禁止TTL为1的数据包进入
iptables -A FORWARD -m ttl --ttl-eq 1 -j DROP
#禁止转发TTL为1的数据

禁止二级路由:

iptables -t mangle -A PREROUTING -i pppoe-wan -j TTL --ttl-set 2
#进入路由数据包TTL设置为2,二级路由可接收数据不转发。

Openwrt/Linux下用bridges和Iptables构建透明防火墙

发布时间:August 5, 2012 // 分类:OpenWrt // No Comments

1.设置桥接内网和外网:

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig br0 netmask 255.255.255.0 192.168.1.2 up

配置Iptables防火墙,eth0为外网,eth1为内网。

#配置防火墙自身规则
iptables -P INPUT DROP
iptables -A INPUT –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m physdev --physdev-in eth1 -j ACCEPT
#配置转发规则
iptables -P FORWARD DROP
iptables -A FORWARD –m state --state RELATED,ESTABLISHED –j ACCEPT
iptables -A FORWARD -m physdev --physdev-in eth1 --physdev-out eth0 -j ACCEPT

Centos5.7不编译内核安装Iptables Layer7模块

发布时间:July 29, 2012 // 分类:Iptables,Linux基础 // No Comments

Centos查看当前内核、Iptables版本并下载相应源码:

#https://www.haiyun.me
uname -r
2.6.18-274.el5
cd /usr/src/kernels/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.gz
iptables -V
iptables v1.3.5
wget http://ftp.netfilter.org/pub/iptables/iptables-1.3.5.tar.bz2

或下载Centos官方内核源码:

useradd test
su -l test
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
yum install rpm-build redhat-rpm-config unifdef
rpm -i http://vault.centos.org/5.7/os/SRPMS/kernel-2.6.18-274.el5.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
cd ~/rpmbuild/BUILD/kernel*/linux*/ #源码所在目录

下载Layer7模块和规则文件:

wget http://sourceforge.net/projects/l7-filter/files/l7-filter%20kernel%20version/2.18/netfilter-layer7-v2.18.tar.gz
wget http://sourceforge.net/projects/l7-filter/files/Protocol%20definitions/2009-05-28/l7-protocols-2009-05-28.tar.gz

给内核打上Layer7补丁并编译模块:

tar zxvf linux-2.6.18.tar.gz 
tar zxvf netfilter-layer7-v2.18.tar.gz
cd linux-2.6.18
patch -p1 < ../netfilter-layer7-v2.18/for_older_kernels/kernel-2.6.18-2.6.19-layer7-2.9.patch
#查看READ文件根据内核版本选择相应的补丁
yum install -y ncurses-devel 
#安装ncurses库,编译内核需要
make oldconfig
#备份配置文件
make menuconfig
#进入内核编译选项

在以下菜单处理选择将layer7编译为模块:

Networking——Networking options--->Network packet filtering (replaces ipchains)--->Layer 7 match support (EXPERIMENTAL) 

编译内核模块:

#https://www.haiyun.me
make prepare
make modules_prepare
#创建外部模块所需文件,后续可直接编译指定模块
make M=net/ipv4/netfilter/
#仅编译防火墙相关模块

复制编译的layer7.ko模块至系统:

strip --strip-debug net/ipv4/netfilter/ipt_layer7.ko
cp net/ipv4/netfilter/ipt_layer7.ko /lib/modules/2.6.18-274.el5/kernel/net/ipv4/netfilter/
chmod 744 /lib/modules/2.6.18-274.el5/kernel/net/ipv4/netfilter/ipt_layer7.ko 
depmod -a

编译安装Iptables layer7模块:

tar jxvf iptables-1.3.5.tar.bz2 
cd iptables-1.3.5
patch -p1 < ../netfilter-layer7-v2.18/iptables-1.3-for-kernel-pre2.6.20-layer7-2.18.patch 
#给iptables打上layer7补丁,阅读README根据内核及Iptables版本选择相应的补丁
chmod +x extensions/.layer7-test 
make KERNEL_DIR=/usr/src/kernels/linux-2.6.18
make install KERNEL_DIR=/usr/src/kernels/linux-2.6.18

安装Layer7示例脚本:

tar -zxvf l7-protocols-2009-05-28.tar.gz
cd l7-protocols-2009-05-28
make install

应用示例:

modprobe ipt_layer7
/usr/local/sbin/iptables -A FORWARD -m layer7 --l7proto qq -j DROP 

LVS+Keepalived下Iptables配置

发布时间:July 18, 2012 // 分类:Iptables // No Comments

iptables -I INPUT -d 224.0.0.0/8 -j ACCEPT
iptables -I INPUT -p vrrp -j ACCEPT
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...