使用ipset配合iptables使用,来进行转发

iptables转发与ipset地址池的使用

iptables转发有一种思想是建一条链,然后做IP的排除。IP段里面的return,非IP段里面的redirect到对应的端口上。

今天说另一种思想,类似autoproxy。用ipset建一个地址池,方法如下:

# ipset create myset-ip hash:ip
or

# ipset -N myset-ip iphash

添加任何你想要阻止的IP地址到集合中:

# ipset add myset 1.1.1.1
# ipset -A myset 2.2.2.2

关于ipset的用法,最好查看Arch Wiki,内容非常详细。

下面是实例:

ipset -N flyme iphash   # flyme池

iptables -t nat -A PREROUTING -p tcp -m set --match-set flyme dst -j REDIRECT --to-port 1080            # 转发到1080端口

还要配合dnsmasq来使用,配置如下:

server=/.yourdomain.com/8.8.8.8
ipset=/.yourdomain.com/flyme

这样就可以将yourdomain通过8.8.8.8来获取DNS,最终通过1080端口出去。

上一篇
下一篇