强大的linux网络功能

Linux无疑是非常强大的。我们现在来考虑这么一个网路情况,顺便学习下linux强大的网络功能。

情况是这样的,我们有3个网络环境:

1: 平时工作的地方,网络是192.168.5.0/24。

2:另外一个部门,在另外一个楼里边,网络是:192.168.8/0/24。

3:有一个对外的机房,机房的内网地址是:192.168.4.0/24。

现在.4和.8之间已经通过点对点VPN链接起来了。而.5跟.8也通过VPN链接起来了。问题是IT忘记了在.4和.5之间配置VPN了。倒起数据那个辛苦啊。

有人会说了,不辛苦啊,用ssh port forward吧,好主意。也是一个好工具。如果只是.5和.8之间某两台服务器之间传输数据,这种方法无疑是非常简单方便的。但是机房里边有好多机器要访问啊。还是麻烦。

回头看看,既然.5和.8之间已经有了VPN,我们是不是可以通过ipip来把.5和.8放到同一个逻辑上在一个子网内呢?

答案是肯定的。我们可以通过ipip来实现。

假定,我们.5的ip是:192.168.5.31,.8服务器的ip是192.168.8.31。

在.8上,我们运行如下命令:

modprobe ipip
modprobe ip_gre
ip tunnel add tun0 mode gre remote 192.168.5.31 local 192.168.8.31
ip link set tun0 up
ip addr add 10.0.0.1 peer 10.0.0.2 dev tun0
ip route add 10.0.0.0/24 dev tun0
iptables -F

在.5上,我们同样运行类似的命令:

modprobe ipip
modprobe ip_gre
ip tunnel add tun0 mode gre remote 192.168.8.31 local 192.168.5.31
ip link set tun0 up
ip addr add 10.0.0.2 peer 10.0.0.1 dev tun0
ip route add 10.0.0.0/24 dev tun0
iptables -F

我们可以看出,.5和.8现在互相可以通过ping 10.0.0.X网络了。

但是我们的问题还是没有解决,如何在.5上访问到.4网络呢?

我们试着在.5上增加一条路由表:

route add -net 192.168.4.0/24 gw 10.0.0.1 dev tun0

发现还是不行。为啥不行,在8.31上抓包看到.8上已经收到.5.31上发出来的数据包了。但是由于系统缺省是不做转发的,所以,系统把这个数据包给扔掉了。

看到这里,就简单了。还需要两个步骤就能收工了。

第一步:打开转发。

echo 1 > /proc/sys/net/ipv4/ip_forward

或者通过sysctl来控制。

第二步,做SNAT

 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o br0 -j MASQUERADE

这里的br0是因为.8上使用了网桥,如果没有网桥,可以把包转到你希望的对外链接设备上,比如eth0。

到此,在5.31上就可以透明的访问到.4网段了。


转载于:https://my.oschina.net/pikeman/blog/198977

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值