现在的位置: 首页 > 综合 > 正文

使用route(路由)模拟镜像数据包

2018年10月04日 ⁄ 综合 ⁄ 共 1291字 ⁄ 字号 评论关闭

让192.168.10.232发送到192.168.10.234的数据包,都经过192.168.10.233。也就是把192.168.10.232发送到192.168.10.234的数据包,的网关设置为192.168.10.233。

一、配置route

1.1 查看路由

      在192.168.10.232上,route -n

1.2 添加路由

     在192.168.10.232上, route add -host 192.168.10.234 gw 192.168.10.233 dev eth0

      route -n

     该路由是:让192.168.10.232发送到192.168.10.234的数据包,都经过192.168.10.233,232上的出口为eth0。

1.3 配置“转发”

      在192.168.10.233上,将/proc/sys/net/ipv4/ip_forward的值设置为1:echo 1 > /proc/sys/net/ipv4/ip_forward。

      或将 /etc/sysctl.conf中的net.ipv4.ip_forward设置为1。

二、测试

2.1 出错的测试

      在192.168.10.232上执行:ping 192.168.10.234。

      在192.168.10.233上抓包:tcpdump -i em1 icmp -nn -vv -s0 如下:

          产生“ICMP redirect”,当再次执行上述2步骤时,数据包不再经过234。

          原因:232、233、234在同一个局域网内,当232发往234的数据包,经过233时,233发现都在同一个局域网内,就发送“ICMP redirect”告诉232可以直接将数据包发送到234,不必经过233,以后的数据包,就不会再经过233。

2.2 解决办法

      1.不让233发送redirect数据包:在233,将/proc/sys/net/ipv4/conf下的 all/send_redirects、default/send_redirects、em1/send_redirects、 lo/send_redirects的值改为0。

            echo 0 > all/send_redirects

            echo 0 > default/send_redirects

            echo 0 > em1/send_redirects

            echo 0 > lo/send_redirects

或者

        2.不让232接收redirect数据包:在232,将/proc/sys/net/ipv4/conf下的 all/accept_redirects、default/accept_redirects、em1/accept_redirects、 lo/accept_redirects的值改为0。

  

      最好用解决办法1。解决办法2,虽然232不接受包,但是233会不停的想232发送“redirect”包,不太好。

2.3 正确的测试

      再次执行2.1中的测试,即可发现结果正确,所有由232发送到234的数据包,都经过了233。

抱歉!评论已关闭.