linux ip隧道技术,Linux 隧道技术

moprobe ip_gre

ip tunnel add tun1 mode gre ... ...

来实现,而后面的参数基本上不需要改变。

上面是一个简单的没有任何加密的隧道建立过程,这样通讯可能会带来安全隐患,毕竟我们访问的是内网吗。

下面来给这个隧道加密。

ipsec 是一个复杂的东西,这里只简单的介绍,如果有问题请查阅在线的[url=http://control.cublog.cn/%5C%22http://www.ipsec-howto.org/%5C%22]文档

setkey 是 ipsec 的管理工具,语法类似 setkey -c 然后输入命令,按 ctrl^C 退出。

setkey 中的命令是

add src_ip dst_ip esp SPI -E 3des-cbc \\"password\\";

格式就是这个样子,也比较好理解, 源地址,目的地址,加密头还是数据,安全码(SPI)验证方式,及共享密钥。

下面在 211.167.237.218 上建立 ipsec

setkey -c

flush;

spdflush;

add 211.167.237.218 123.127.177.195 esp 11571 -E 3des-cbc \\"__esp_test_3des_password\\";

add 123.127.177.195 211.167.237.218 esp 11572 -E 3des-cbc \\"__esp_test_3des_password\\";

add 211.167.237.218 123.127.177.195 ah 15071 -A hmac-md5 \\"ah_test_password\\";

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

spdadd 211.167.237.218 123.127.177.195 any -P out ipsec

esp/transport/192.168.100.1-192.168.100.250/require

ah/transport/192.168.100.1-192.168.100.250/require;

spdadd 123.127.177.195 211.167.237.218 any -P in  ipsec

esp/transport/192.168.200.1-192.168.200.250/require

ah/transport/192.168.200.1-192.168.200.250/require;

^C (ctrl+c)

这样就算配置完成了,你可以通过 setkey -D[P][p] 来检查,或者在 setkey 里使用 dump

为了方便,不用每次都敲一大堆命令,在 123.127.177.195 上写一个启动策略脚本。

#!/bin/bash

#

# chkconfig: 345 15 98

# description: Linux IPsec SA/SP database

#

# Source function library.

. /etc/init.d/functions

start() {

echo -n $\\"ipsec start ... \\"

/etc/setkey.conf && echo -e \\"\\\\33[60G[  \\\\33[32mOK\\\\33[39m  ]\\"

}

case \\"$1\\" in

start)

start

;;

stop)

echo -n \\"flush;spdflush;\\" | \\\\

setkey -c && echo -e \\"ipsec stoping ... \\\\33[60G[  \\\\33[32mOK\\\\33[39m  ]\\"

;;

reload)

$0 stop

$0 start

;;

*)

echo $\\"Usage: $0 {start|stop|reload}\\"

exit 1

esac

exit $?

# cat setkey.conf

#!/sbin/setkey -f

flush;

spdflush;

# ESP

add 211.167.237.218 123.127.177.195 esp 11571 -E 3des-cbc \\"__esp_test_3des_password\\";

add 123.127.177.195 211.167.237.218 esp 11572 -E 3des-cbc \\"__esp_test_3des_password\\";

# AH

add 211.167.237.218 123.127.177.195 ah 15071 -A hmac-md5 \\"ah_test_password\\";

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

# POLICY

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

spdadd 211.167.237.218 123.127.177.195 any -P in ipsec

esp/transport/192.168.100.1-192.168.100.250/require

ah/transport/192.168.100.1-192.168.100.250/require;

spdadd 123.127.177.195 211.167.237.218 any -P out  ipsec

esp/transport/192.168.200.1-192.168.200.250/require

ah/transport/192.168.200.1-192.168.200.250/require;

接下来我们就运行 ipsec.sh start 就能启动 ipsec 了,如果想停止就运行 ipsec.sh stop

或者你还可以吧 ipsec 拷贝到 /etc/init.d/ipsec 然后运行 chkconfig --add ipsec 让他作为服务,开机就启动。

可能细心的读者已经发现在两个服务器上的脚本略有不同,实际就是把 Policy 里面的 in 和 out 对换一下,然后写上本地子网就可以了。

上面是一个简单的隧道建立过程,下面我们来个复杂一点的,也是我们常碰到的结构。

图2

----------      -------------      ------------      ----------------      -------

| client |  | nat server|  | internet |  | Linux server |  | Lan |

----------      -------------      ------------      ----------------      -------

|client         ip     192.168.100.100/24 gateway 192.168.100.254                |

|nat server:    lan_ip 192.168.100.254/24 wan_ip  123.119.206.165                |

|Linux server:  lan_ip eth0 192.168.200.100/24 wan_ip eth1 123.127.177.210       |

|--------------------------------------------------------------------------------|

这个结构比较麻烦了,因为我们的源地址会被改写一次,这个该如何配置呢。

实际上在linux上配置这个也很简单,只要遵循原则,看见谁,就写谁的方法就没有问题。

比如在我们客户机上看见的一定是 由我们本地的ip(伪)到远程服务器的ip(实),而远程服务器看到的情况却有点不一样,服务器看到的是,客户机经过nat后的ip(实),和本机ip(实)在通讯,根据这个原则,我们写出如下命令。

A:client

modprobe ip_gre

ip tunnel add tun2 mode gre remote 123.127.177.210 local 192.168.100.100 ttl 64

ip link set tun2 mtu 1480 up

ip address add 192.168.200.253 brd 255.255.255.255 peer 123.127.177.210 dev tun2

B:Server

modprobe ip_gre

ip tunnel add tun2 mode gre remote 123.119.206.165 local 123.127.177.210 ttl 64

ip link set tun2 mtu 1480 up

ip address add 192.168.100.253 brd 255.255.255.255 peer 123.119.206.165 dev tun2

这样隧道就建立起来了。moprobe ip_gre

ip tunnel add tun1 mode gre ... ...

来实现,而后面的参数基本上不需要改变。

上面是一个简单的没有任何加密的隧道建立过程,这样通讯可能会带来安全隐患,毕竟我们访问的是内网吗。

下面来给这个隧道加密。

ipsec 是一个复杂的东西,这里只简单的介绍,如果有问题请查阅在线的[url=http://control.cublog.cn/%5C%22http://www.ipsec-howto.org/%5C%22]文档

setkey 是 ipsec 的管理工具,语法类似 setkey -c 然后输入命令,按 ctrl^C 退出。

setkey 中的命令是

add src_ip dst_ip esp SPI -E 3des-cbc \\"password\\";

格式就是这个样子,也比较好理解, 源地址,目的地址,加密头还是数据,安全码(SPI)验证方式,及共享密钥。

下面在 211.167.237.218 上建立 ipsec

setkey -c

flush;

spdflush;

add 211.167.237.218 123.127.177.195 esp 11571 -E 3des-cbc \\"__esp_test_3des_password\\";

add 123.127.177.195 211.167.237.218 esp 11572 -E 3des-cbc \\"__esp_test_3des_password\\";

add 211.167.237.218 123.127.177.195 ah 15071 -A hmac-md5 \\"ah_test_password\\";

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

spdadd 211.167.237.218 123.127.177.195 any -P out ipsec

esp/transport/192.168.100.1-192.168.100.250/require

ah/transport/192.168.100.1-192.168.100.250/require;

spdadd 123.127.177.195 211.167.237.218 any -P in  ipsec

esp/transport/192.168.200.1-192.168.200.250/require

ah/transport/192.168.200.1-192.168.200.250/require;

^C (ctrl+c)

这样就算配置完成了,你可以通过 setkey -D[P][p] 来检查,或者在 setkey 里使用 dump

为了方便,不用每次都敲一大堆命令,在 123.127.177.195 上写一个启动策略脚本。

#!/bin/bash

#

# chkconfig: 345 15 98

# description: Linux IPsec SA/SP database

#

# Source function library.

. /etc/init.d/functions

start() {

echo -n $\\"ipsec start ... \\"

/etc/setkey.conf && echo -e \\"\\\\33[60G[  \\\\33[32mOK\\\\33[39m  ]\\"

}

case \\"$1\\" in

start)

start

;;

stop)

echo -n \\"flush;spdflush;\\" | \\\\

setkey -c && echo -e \\"ipsec stoping ... \\\\33[60G[  \\\\33[32mOK\\\\33[39m  ]\\"

;;

reload)

$0 stop

$0 start

;;

*)

echo $\\"Usage: $0 {start|stop|reload}\\"

exit 1

esac

exit $?

# cat setkey.conf

#!/sbin/setkey -f

flush;

spdflush;

# ESP

add 211.167.237.218 123.127.177.195 esp 11571 -E 3des-cbc \\"__esp_test_3des_password\\";

add 123.127.177.195 211.167.237.218 esp 11572 -E 3des-cbc \\"__esp_test_3des_password\\";

# AH

add 211.167.237.218 123.127.177.195 ah 15071 -A hmac-md5 \\"ah_test_password\\";

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

# POLICY

add 123.127.177.195 211.167.237.218 ah 15072 -A hmac-md5 \\"ah_test_password\\";

spdadd 211.167.237.218 123.127.177.195 any -P in ipsec

esp/transport/192.168.100.1-192.168.100.250/require

ah/transport/192.168.100.1-192.168.100.250/require;

spdadd 123.127.177.195 211.167.237.218 any -P out  ipsec

esp/transport/192.168.200.1-192.168.200.250/require

ah/transport/192.168.200.1-192.168.200.250/require;

接下来我们就运行 ipsec.sh start 就能启动 ipsec 了,如果想停止就运行 ipsec.sh stop

或者你还可以吧 ipsec 拷贝到 /etc/init.d/ipsec 然后运行 chkconfig --add ipsec 让他作为服务,开机就启动。

可能细心的读者已经发现在两个服务器上的脚本略有不同,实际就是把 Policy 里面的 in 和 out 对换一下,然后写上本地子网就可以了。

上面是一个简单的隧道建立过程,下面我们来个复杂一点的,也是我们常碰到的结构。

图2

----------      -------------      ------------      ----------------      -------

| client |  | nat server|  | internet |  | Linux server |  | Lan |

----------      -------------      ------------      ----------------      -------

|client         ip     192.168.100.100/24 gateway 192.168.100.254                |

|nat server:    lan_ip 192.168.100.254/24 wan_ip  123.119.206.165                |

|Linux server:  lan_ip eth0 192.168.200.100/24 wan_ip eth1 123.127.177.210       |

|--------------------------------------------------------------------------------|

这个结构比较麻烦了,因为我们的源地址会被改写一次,这个该如何配置呢。

实际上在linux上配置这个也很简单,只要遵循原则,看见谁,就写谁的方法就没有问题。

比如在我们客户机上看见的一定是 由我们本地的ip(伪)到远程服务器的ip(实),而远程服务器看到的情况却有点不一样,服务器看到的是,客户机经过nat后的ip(实),和本机ip(实)在通讯,根据这个原则,我们写出如下命令。

A:client

modprobe ip_gre

ip tunnel add tun2 mode gre remote 123.127.177.210 local 192.168.100.100 ttl 64

ip link set tun2 mtu 1480 up

ip address add 192.168.200.253 brd 255.255.255.255 peer 123.127.177.210 dev tun2

B:Server

modprobe ip_gre

ip tunnel add tun2 mode gre remote 123.119.206.165 local 123.127.177.210 ttl 64

ip link set tun2 mtu 1480 up

ip address add 192.168.100.253 brd 255.255.255.255 peer 123.119.206.165 dev tun2

这样隧道就建立起来了。moprobe ip_gre

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值