最近成立了实验室的网络环境中,通过交换机连接的所有主机实验室。想要一个通过该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

这就像它的完成~

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

ubuntu12.04单卡server(mentohust认证)再加上交换机做路由软件共享上网的更多相关文章

  1. (转)Ubuntu12.04上NFS Server安装使用过程

    原文链接:Ubuntu12.04上NFS Server安装使用过程 实现步骤: 1.服务器端:sudo apt-get install portmap2.服务器端:sudo apt-get insta ...

  2. vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化)

    环境准备 软件:vmware workstation 9.0    ubuntu-12.04.2-server-amd64(官方下载) 硬件:确认CPU支持虚拟化VM-T vmware设置 vmwar ...

  3. ubuntu12.04 server + apache2 + wsgi + django1.6 部署

    最近在学Python和Django,想自己部署一个服务器试试 环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 在网 ...

  4. [分享]Ubuntu12.04安装基础教程(图文)

    [分享]Ubuntu12.04安装基础教程(图文) 原文地址: http://teliute.org/linux/Ubsetup/lesson21/lesson21.html 1.进入 live cd ...

  5. ubuntu12.04管理员账户登录不了桌面,只能客人会话登录

    ubuntu12.04管理员账户登录不了桌面,只能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,只能客人会话登录. 登录管理员账户时,输入密码后,一直在登录界面循环 费了好大劲啊 ...

  6. ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录

    ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录. 登录管理员账户时,输入password后,一直在登录界面循 ...

  7. RP4412开发板烧写Ubuntu12.04失败原因分析解决

    Ubuntu烧写失败可能是卡的问题 问:用RP4412开发板,卡烧了光盘中的fastboot失败,现在如何补救呢? 答:INAND格式化,利用usb来升级啊. 也有文档,看升级文档. 问:这个是怎么回 ...

  8. ubuntu12.04+Elasticsearch2.3.3伪分布式配置,集群状态分片调整

    目录 [TOC] 1.什么是Elashticsearch 1.1 Elashticsearch介绍 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.能够快速搜索数 ...

  9. VirtualBox中安装Ubuntu12.04/Ubuntu14.04虚拟机

    NOTE: 一开始安装的Ubuntu12.04,后来又重新安装了14.04.截图基本使用了安装12.04时的截图,后来安装14.04时又补充了几张.该安装过程对Ubuntu12.04和14.04都是适 ...

随机推荐

  1. swift学习第十三天:类的构造函数

    类的构造函数 构造函数的介绍 构造函数类似于OC中的初始化方法:init方法 默认情况下载创建一个类时,必然会调用一个构造函数 即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数. 如果是继 ...

  2. [CSS] Showing horizontal scrollbar always for the table

    table { display: block; overflow: scroll; width: 200px; height:95vh; }

  3. Django之模板过滤器

    Django 模板过滤器也是我们在以后基于 Django 网站开发过程中会经常遇到的,如显示格式的转换.判断处理等.以下是 Django 过滤器列表,希望对为大家的开发带来一些方便. 一.形式:小写 ...

  4. php实现 合并表记录(需求是最好的老师)

    php实现 合并表记录(需求是最好的老师) 一.总结 一句话总结:php数组,桶. 1.fgets的作用? 读取一行 0 1 2.如何读取一行中的两个数? fgets()读取一行后explode以空格 ...

  5. ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入、和使用、.js文件传输加解密

    JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以 ...

  6. sql中group by用来干嘛的

    sql中group by用来干嘛的 一.总结 一句话总结: 1.group by用来分类汇总的,by后面接要分的类 2.group by既然是分类汇总,那就要和聚合函数结合使用,因为要汇总啊 3.ha ...

  7. HDOJ 1261 字串数

    JAVA大数.... 字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  8. ts demuxer的加入记录

    文件夹 1 初衷 2 ts demux的功能介绍 1 初衷 之前打算给dtplayer加入一些亮点功能,最初的想法是:bt下载播放 + hls支持 bt下载因为以来libtorrent库,尽管搞懂了怎 ...

  9. 【erlang 网络编程学习】 分析cowboy acceptor实现

    http://www.tuicool.com/articles/vuymei 不知道为什么就看了cowboy代码,就继续看了下去了. 分析一下吧,主要写写cowboy 的acceptor pool 的 ...

  10. reduce 阶段遍历对象添加到ArrayList中的问题

    起初遍历values时直接把对象添加到集合中,后来输出结果和预期不符,debug时发现添加到集合中的对象的值全部是最后一个对象的值,网上百度了下,发现是reduce阶段对象重用的问题,reduce阶段 ...