2024年3月26日发(作者:)

linux ip tunnel轻松构建隧道,实现B单线借用A双线两网合一。

参考:linux 高级路由&&流量控制

A点

QUOTE:

cnc internet ip address: eth0 221.0.0.130/30

telecom internet ip address: eth1 219.146.0.130/30

ethernet ip address: eth2 192.168.0.254/24

B点

QUOTE:

cnc internet ip address:eth0 218.58.57.146/30

ethernet ip address:eth1 192.168.0.254

(就是让他跟a点一样!)

首先建立隧道:

A机设置:

QUOTE:

#!/bin/bash

modprobe ip_gre

ip tunnel add ipip mode gre remote 218.58.57.146 local 221.0.0.130

#配置本地和对端互连

QUOTE:

ip link set ipip up

#起一个interface--ipip

QUOTE:

ip addr add 10.88.0.1/30 dev ipip

#把10.88.0.1/30这个地址配给ipip这个interface

好了,退出,ifconfig | more 一下,就会发现ipip这块虚网卡上配置了10.88.0.1/30

这个地址。

B机设置:

QUOTE:

#!/bin/bash

modprobe ip_gre

ip tunnel add ipip mode gre remote 221.0.0.130 local 218.58.57.146

#配置本地和对端互连

QUOTE:

ip link set ipip up

#起一个interface--ipip

ip addr add 10.88.0.2/30 dev ipip

#把10.88.0.2/30这个地址配给ipip这个interface

ifconfig | more 一下,就会发现ipip这块虚网卡上配置了10.88.0.2/30这个地址。

到B机ping 10.88.0.1应该可通;

A ping B 10.88.0.2也通。

好了,开始策略路由。

1.路由表---->论坛有。

例:到电信网段219.146.0.0/16的目的地址从A机走出去

B机上

QUOTE:

route add -net 219.146.0.0/16 gw 10.88.0.1

es起地址伪装:光有路由可不行,iptables还要伪装,不然到了A机怎么回来?

除非内网不是一个网段而且10.88.0.0/30作内网互连地址。

QUOTE:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ipip -j MASQUERA

DE/SNAT --to 10.88.0.

2 (所有路由表送到interface ipip的数据全部伪装到10.88.0.2)

3.A机路由配置要灵活:有用iproute2 和目的地址匹配的正好不用处理伪装上来的

10.88.0.2/32,一行命令搞定:

QUOTE:

iptables -t nat -A POSTROUTING -s 10.88.0.0/30 -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 10.88.0.0/30 -o eth1 -j MASQUERADE

如果a机没配策略咋办 ?先配两个网关:

QUOTE:

ip route add 0/0 via 221.0.0.129

ip route add 0/0 via 219.146.0.129 table 100

制定路由表100的下一跳是219.146.0.129不难理解吧~

QUOTE:

ip rule add from 10.88.0.0/30 table 100

把源地址作了地址转换的A机的虚拟地址上来的10.88.0.2指定下一跳为电信地址

table 100(回头看table 100的定义)

两个内网同一网段有问题?no!作了pat/nat了。无所谓。

我是升级内核了,没ros,iptunnel一样可以做!而且作就比ros稳定!