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稳定!


发布评论