人若无名,便可专心练剑

 iptables 标签

将raspberry pi 3 打造成你的路由器神器一(基础版本)

  |   0 评论   |   5,669 浏览

raspberrypi镜像烧录

1,首先到raspberry 官网下载镜像

https://www.raspberrypi.org/downloads/raspbian/

2,安装请参考

https://www.raspberrypi.org/documentation/installation/installing-images/README.md

3,将下载的镜像烧录到sd卡后,加电点亮。

呵呵,开始现在的正常路由化之路

实现形式:internet<->raspberry pi3 (无线网卡i)----------raspberry pi3 (有线网卡eth0) <--有线-->终端

1,由于raspberrypi 已经自带无线网卡这为我们网络接入网络带来了很大的方便,因此我们此处也把wifi端当成了我们路由器的wlan口

2,配置eth0静态地址(配置路径:/etc/network/interfaces)

3,按抓给你dhcp服务器,实现p地址分发

4,配置dhcp服务器 配置路径(/etc/dhcp/dhcpd.conf)

5,配置完成后将dhcp加入启动项

6,配置iptables

8,将iptables相关配置加入启动项

9,重启raspberry pi3 ,将笔记本或者网络设备通过RJ45头网线线接入raspberry的网络口,如果我们终端设置的为自动获取ip那么我们就可以直接获取到ip地址,然后就可以进行上网了。

当然至此:我们仅仅diy了个路由器(当然我们可以在这个路由器上干很多的东西,比如什么x鱼啊,什么之类的)。本片文章也是为下篇做为基础,因此简单掠过,下一篇将介绍,我们是如何打造为(梯子神器基于t-o-r网络),当然由于raspberry pi3的便携性,我们可以随身带,走到哪里都能方便为我们做"梯"。



Squid+iptables 透明代理异常TCP_DENIED/400问题解决

  |   0 评论   |   3,597 浏览

由于配置squid配置代理时没配置 http_port 采用默认


http_port 3128


因此,配置浏览器代理能成功访问,表示没问题。

但是通过iptables 重定向到3128的却始终报错(感觉很2B,搞了几个小时,困死了问题也没解决,百度半天没用,最后还是用google,一下就解决了,擦,感觉瞬间又2B了 为啥不早点用google呢)

问题如下:


TCP_DENIED/400 2706 GET NONE:// - NONE/- text/html


解决方法:

将http_port 改为如下就能透明代理了


http_port 3128 transparent


后记:有问题第一先google,千万别百度,坑死人。搞了大半夜,真心无爱度娘。睡觉了

iptables规则链执行顺序

  |   0 评论   |   2,341 浏览

本文来源:from http://bbs.chinaunix.net/thread-936284-1-1.html

预备知识(转): iptable有三种队列(表)规则,mangle queue, filter queue, nat queue。

1。The first is the mangle table which is responsible for the alteration of quality of service bits in the TCP header.
2。The second table is the filter queue which is responsible for packet filtering.
    * Forward chain: Filters packets to servers protected by the firewall.
    * Input chain: Filters packets destined for the firewall.
    * Output chain: Filters packets originating from the firewall.
3。The third table is the nat queue which is responsible for network address translation. It has two built-in chains; these are:
    * Pre-routing chain: NATs packets when the destination address of the packet needs to be changed.
    * Post-routing chain: NATs packets when the source address of the packet needs to be changed

个人总结:
iptables执行规则时,是从从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept, reject, log等),决定下一步执行的情况,后续执行一般有三种情况。
1。一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。
2。一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行
3。一种是中止所有规则队列的执行。

--------------------其它相关知识补充(转过来的)-----------------------------

iptables 是采用规则堆栈的方式来进行过滤,当一个封包进入网卡,会先检查 Prerouting,然后检查目的 IP 判断是否需要转送出去,接着就会跳到 INPUT 或 Forward 进行过滤,如果封包需转送处理则检查 Postrouting,如果是来自本机封包,则检查 OUTPUT 以及 Postrouting。过程中如果符合某条规则将会进行处理,处理动作除了 ACCEPT、REJECT、DROP、REDIRECT 和 MASQUERADE 以外,还多出 LOG、ULOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、TOS、TTL、MARK 等,其中某些处理动作不会中断过滤程序,某些处理动作则会中断同一规则炼的过滤,并依照前述流程继续进行下一个规则炼的过滤(注意:这一点与 ipchains 不同),一直到堆栈中的规则检查完毕为止。透过这种机制所带来的好处是,我们可以进行复杂、多重的封包过滤,简单的说,iptables 可以进行纵横交错式的过滤(tables)而非炼状过滤(chains)。

1  ACCEPT 将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则炼(nat:postrouting)。
2   REJECT 拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply
    或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接 中断过滤程序。 范例如下:
     iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
3   DROP 丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
4   REDIRECT 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将 会继续比对其它规则。 这个功能可以用来实作通透式 porxy
    或用来保护 web 服务器。
    例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
5   MASQUERADE 改写封包来源 IP 为防火墙 NIC IP,可以指定 port
    对应的范围,进行完此处理动作后,直接跳往下一个规则炼(mangle:postrouting)。这个功能与 SNAT 略有不同,当进行 IP
    伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读取,当使用拨接连线时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下: 
      iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
6   LOG 将封包相关讯息纪录在 /var/log 中,详细位置请查阅 /etc/syslog.conf 组态档,进行完此处理动作后,将会继续比对其它规则。
    例如:
      iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
7   SNAT 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port
    对应的范围,进行完此处理动作后,将直接跳往下一个规则炼(mangle:postrouting)。
    范例如下:
      iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
8    DNAT 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规则炼
   (filter:input 或 filter:forward)。
     范例如下:
      iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10:80-100
9   MIRROR 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。
10  QUEUE 中断过滤程序,将封包放入队列,交给其它程序处理。透过自行开发的处理程序,可以进行其它应用,例如:计算联机费用.......等。
11  RETURN 结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,
    就相当于提早结束子程序并返回到主程序中。
12  MARK 将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。
    范例如下:
      iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

将linux作为软路由器使用

  |   0 评论   |   3,623 浏览

前述:由于这段时间公寓网络线路部分出现了问题,造成网络端口不够用了,

         而我电脑一般都直接网线链接,因此原来的无线路由器就不能分配端口了

        但是。。呢。。我有两个两个物理网卡,呵呵,又可以倒腾下了。


网络环境:eth1:192.168.28.126/24  电脑外出网络地址
          eth0:192.168.29.1/24   准备的虚拟网络地址,
          无线路由器:tp_link,静态地址:192.168.28.2/24


大致很为以下步骤(以下均在root权限操作):

1,连接上eth1保证能正常上网。

2,eth0 配置如下:

root@c2y2:/# ifconfig eth0 192.168.29.1 netmask 255.255.255.0
3,添加路由(由于eth1 连接时 默认路由都自动设置好了,这你就不需要我们再重新设置了)
root@c2y2:/#  route add -net 192.168.29.0 netmask 255.255.255.0 dev eth0
或者
root@c2y2:/#  route add -net 192.168.29.0/24 dev eth0
4,开启内核网络转发
root@c2y2:/# echo 1 >/proc/sys/net/ipv4/ip_forward
5,启用iptables,开启转发并开启nat
root@c2y2:/# iptables -P FORWARD ACCEPT #开启转发
root@c2y2:/# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE #开启snat
6,配置tpl-link路由器如图:

路由器外出网路配置:


开启动态dhcp:



7,使用手机测试


:-),这样我们就可以上网了,enjoy,网络吧

到这里,我偷偷笑了,这里我们可以干的事有点多哦(发挥你的想象吧。。。。^_^)。。。。




附上两张设备照:eth1,图中的usb网卡,eth0:笔记本自带网卡 另外一张即路由器:其中eth0 网络接口与路由器的wan口连接




Centos 6.5 安装pptd服务

  |   0 评论   |   2,588 浏览
server:pptpd2.4.4
1、检查系统是否支持
#modprobe ppp-compress-18 && echo ok 

  输出OK则支持
# cat /dev/net/tun
#  cat: /dev/net/tun: File descriptor in bad state 

  出现这显示说明tun/tap已经开启
  以上两个显示正确可安装pptpd和openvpn
2、安装软件支持
#yum install -y ppp iptables 

3、到官网下载安装软件包并安装
  http://poptop.sourceforge.net/
  本例为:pptpd-1.3.3-1.rhel4.x86_64.rpm
#rpm -ivh pptpd-1.3.3-1.rhel4.x86_64.rpm 

4、配置
   配置DNS
# vim /etc/ppp/options.pptpd 

 
     ms-dns 8.8.8.8
     ms-dns 8.8.4.4

   配置vpn地址


#vim /etc/pptpd.conf 

 
      localip 192.168.20.1
      remoteip 192.168.20.10-100
   配置vpn用户
# vim /etc/ppp/chap-secrets 

 
        user1 pptpd  passwd1 *
        user2 pptpd  passwd2 *
   开启数据包转发
 
# vim /etc/sysctl.conf 

 
  net.ipv4.ip_forward = 0
   改成如下
net.ipv4.ip_forward = 1
# sysctl -p
此时已配置完pptpd,可启动
# /etc/init.d/pptpd start 

  重启pptpd
#service pptpd restart-kill
#service pptpd start 

5、配置iptables
# iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
# iptables -A INPUT -p tcp --dport 47 -j ACCEPT
# iptables -A INPUT -p gre -j ACCEPT
# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE 

  保存iptables
# /etc/init.d/iptables save 

  重启
# /etc/init.d/iptables restart