ubuntu12.04单卡server(mentohust认证)再加上交换机做路由软件共享上网

        最近成立了实验室的网络环境中,通过交换机连接的所有主机实验室。想要一个通过该server(单卡)做网关,使用mentohust认证外网,然后内网中的其它主机通过此网关来连接外网。

        1.首先在server上利用mentohust连接外网,然后在终端输入ifconfig命令来查看获得的外网ip:

eth0      Link encap:以太网  硬件地址 b8:ac:6f:d8:8f:a2  
          inet 地址:115.156.236.116  广播:115.156.236.255  掩码:255.255.255.0
          inet6 地址: 2001:250:4000:4400:4003:3056:bf9a:df7f/64 Scope:Global
          inet6 地址: 2001:250:4000:4400:baac:6fff:fed8:8fa2/64 Scope:Global
          inet6 地址: fe80::baac:6fff:fed8:8fa2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:31284 错误:0 丢弃:1 过载:0 帧数:0
          发送数据包:19074 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:37252618 (37.2 MB)  发送字节:2297121 (2.2 MB)

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:14588 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:14588 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:2383317 (2.3 MB)  发送字节:2383317 (2.3 MB)

从上面能够看到获得的外网ip为115.156.236.116,须要记下这个ip,以下会用到。

     2.给网卡eth0配置第二个ip。即内网网关。在终端中输入下面命令就可以实现:

sudo ifconfig eth0:0 192.168.0.254 up

完毕后在终端输入ifconfig看到的输出结果例如以下:

eth0      Link encap:以太网  硬件地址 b8:ac:6f:d8:8f:a2  
          inet 地址:115.156.236.116  广播:115.156.236.255  掩码:255.255.255.0
          inet6 地址: 2001:250:4000:4400:4003:3056:bf9a:df7f/64 Scope:Global
          inet6 地址: 2001:250:4000:4400:baac:6fff:fed8:8fa2/64 Scope:Global
          inet6 地址: fe80::baac:6fff:fed8:8fa2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:38759 错误:0 丢弃:1 过载:0 帧数:0
          发送数据包:22017 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:42439643 (42.4 MB)  发送字节:2741665 (2.7 MB)

eth0:0    Link encap:以太网  硬件地址 b8:ac:6f:d8:8f:a2  
          inet 地址:192.168.0.254  广播:192.168.0.255  掩码:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:15363 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:15363 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:2459095 (2.4 MB)  发送字节:2459095 (2.4 MB)

        3.开启server的路由功能,在终端中输入下面命令:

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

        4.设置iptables,在终端中依次输入例如以下命令:

sudo iptables -F   #关闭防火墙
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 115.156.236.116 #地址欺骗

这一步配置完毕以后。内网的其余主机就能够通过静态的配置内网ip(192.168.0.X)。网关为server的内网ip即192.168.0.254,dnsserver设为8.8.8.8就可以上网。关于server(网关)ping不同内网其它主机的原因是其它主机的防火墙没有关闭,尤其是windows系统。


        5.上述操作都是一次性的。每当server重新启动了都要执行一遍。所以最好写个脚本整合一下。在写脚本之前有个问题须要先解决,server(网关)是通过mentohust上网的。而mentohust通过dhcp方式上网不能保证每次获取的ip都同样。所以须要能用命令获取主机的ip,我们在观察ifconfig之后终端里显示的内容:

eth0      Link encap:以太网  硬件地址 b8:ac:6f:d8:8f:a2  
          inet 地址:115.156.236.116  广播:115.156.236.255  掩码:255.255.255.0
          inet6 地址: 2001:250:4000:4400:4003:3056:bf9a:df7f/64 Scope:Global
          inet6 地址: 2001:250:4000:4400:baac:6fff:fed8:8fa2/64 Scope:Global
          inet6 地址: fe80::baac:6fff:fed8:8fa2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:38759 错误:0 丢弃:1 过载:0 帧数:0
          发送数据包:22017 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:42439643 (42.4 MB)  发送字节:2741665 (2.7 MB)

eth0:0    Link encap:以太网  硬件地址 b8:ac:6f:d8:8f:a2  
          inet 地址:192.168.0.254  广播:192.168.0.255  掩码:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:15363 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:15363 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:2459095 (2.4 MB)  发送字节:2459095 (2.4 MB)


我们须要得到的仅仅是当中的115.156.236.116,这一部分能够通过grep配合awk命令来截取出来,详细输入在终端里的命令例如以下:


ifconfig | grep -C 2 -w '\<eth0\>' | grep -C 1 inet6 | grep 'inet 地址' | awk -F ' ' '{print $2}' | awk -F ':' '{print $2}'

我们须要在脚本中利用这个结果。所以要在脚本中将该结果赋值给一个变量。以方便我们在脚本中使用,脚本文件的内容例如以下:


#!/bin/bash
Server_ip=$(ifconfig | grep -C 2 -w '\<eth0\>' | grep -C 1 inet6 | grep 'inet 地址' | awk -F ' ' '{print $2}' | awk -F ':' '{print $2}')
sudo ifconfig eth0:0 192.168.0.254 up
sudo echo "1">/proc/sys/net/ipv4/ip_forward
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to $Server_ip

将脚本文件保存为某一文件名称,比如ConnectTheNet,然后为其添加可运行权限:

sudo chmod a+x ConnectTheNet

这样在每次重新启动server后,先用mentohust连接到外网。然后在终端运行一次该脚本就可以:

sudo ./ConnectTheNet

这就像它的完成~




版权声明:本文博客原创文章,博客,未经同意,不得转载。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值