日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单机搭建学习网络

發布時間:2024/9/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单机搭建学习网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

單機搭建學習網絡

User Mode Linux

Version 1.0

?

?

?

?

?

?

?

?

?

?

?

?

?

Copyleft@ysmonk

20101


目錄

... 12 1???? 系統簡介... 1
2???? 快速搭建... 2
2.1????? 準備工具和軟件... 2
2.2????? 運行... 2
3???? 準備工作... 3
3.1????? 預備知識... 3
3.1.1?????? user-mode-linux. 3
3.1.2?????? uml_net 3
3.1.3?????? screen命令... 3
3.2????? 安裝軟件... 3
3.3????? 制作文件系統... 3
4???? 開始搭建... 5
4.1????? 虛擬交換機... 5
4.2????? 定制文件系統... 5
4.2.1?????? serverA. 5
4.2.2?????? serverB. 5
4.2.3?????? clientA. 6
4.2.4?????? clientB1. 6
4.2.5?????? clientB2. 6
4.3????? 實現NAT. 7
4.3.1?????? 設置serverA. 7
4.3.2?????? 設置serverB. 7
4.3.3?????? 設置host 7
5???? 測試... 9
5.1????? 測試交換機... 9
5.1.1?????? 測試switch1. 9
5.1.2?????? 測試switchA. 9
5.1.3?????? 測試switchB. 9
5.2????? 測試NAT. 9
5.2.1?????? clientA. 9
5.2.2?????? clientB. 10
5.3????? 高級測試... 10
5.3.1?????? 測試×××.. 10
6???? 常見錯誤

1????? 系統簡介

如下圖所示的網絡環境, 最少需要5臺工作站才可以搭建起來, 這給網絡學習帶來極大的障礙, 但是利用User Mode Linux的特性, 就可以在一臺工作站上模擬出這個環境.

本文基于Ubuntu Intrepid環境.

?

2????? 快速搭建

文件系統的制作有些繁瑣,因此可以直接使用已經創建好的文憑系統和腳本進行測試.

2.1??? 準備工具和軟件

sudo apt-get install uml_utilities user-mode-linux

wget ftp://cbib.cnkk.org/incomming/hank-fs-AS

wget ftp://cbib.cnkk.org/incomming/hank-fs-BS

wget ftp://cbib.cnkk.org/incomming/hank-fs-A1

wget ftp://cbib.cnkk.org/incomming/hank-fs-B1

wget ftp://cbib.cnkk.org/incomming/hank-fs-B2

wget ftp://cbib.cnkk.org/incomming/simnet.sh

chmod +x simnet.sh

2.2??? 運行

sudo –i

./simnet.sh

現在網絡已經啟動,可以通過以下命令進入相應的模擬設備操作界面.從而進行第5節的測試.

命令

虛擬設備

screen –r sw1

Switch 1

screen –r swA

Switch A

screen –r swB

Switch B

screen –r vmAS

Server A

screen –r vmBS

Server B

screen –r vmA1

Client A

screen –r vmB1

Client B1

screen –r vmB2

Client B2

?


3????? 準備工作

3.1??? 預備知識

3.1.1??? user-mode-linux

User-mode-linux (UML) 是讓一個Linux作為一個獨立進程運行在另一個linux上。

UML 是一種在同一時間運行多Linux 的安全方式。每個進程都是獨立去其他的,這非常安全,例如在同一機器上進行多種測試和研發而不互相干擾。如果一些測試進程損壞并不會影響宿主系統或研發用進程。

3.1.2??? uml_net

User Mode Linux連接網絡有三種方式,分別是slirp, tuntapuml_switch.

slirp方式最簡單, 只要安裝slirp軟件,在啟動時指定eth0=slirp,并將UMLip設置為10.0.2.15即可, 但是這個方法只支持TCPUDP,不支持ICMP,因此ping不能主機.

tuntap方式稍微復雜一些, 啟動時指定eth0=tuntap,,,192.168.1.201, 這樣會在主機上安裝一個IP192.168.1.201tap設備,UML中設置同一網段的IP即可.

uml_switch的方法最為強大, uml_switch命令會創建一個虛擬交換機,并在主機上安裝一個tap設備, uml_switch –tap tap1 –unix /tmp/switch1, 將會生成tap1設備和虛擬交換機/tmp/switch1, UML只要指定eth0=daemon,,unix,/tmp/switch1即可連上指定的交換機.

3.1.3??? screen命令

使用screen命令,可以在一個putty上完成所有這些操作,下面這個命令的意思是:

在后臺啟動一個screen, 名稱為<screenName>, 并在啟動的screen上執行<command>命令

screen –S <screenName> -d –m <command>

例如

screen –S vmA1 –d –m linux ubd0=hank-fs-A1 eth0=daemon,,unix,/tmp/switchA

3.2??? 安裝軟件

sudo apt-get install uml_utilities user-mode-linux iptables

3.3??? 制作文件系統

#以下命令都使用root帳戶操作

#1. 創建映像文件,并格式文件系統

dd if=/dev/zero of=hank-fs bs=1024K count=400

mkfs.ext3 hank-fs

#2.1 加載基本文件

mount -o loop hank-fs /mnt

debootstrap --arch=i386 intrepid /mnt http://debian.ustc.edu.cn/ubuntu

#2.2. 拷貝modules到文件系統

cp -r /usr/lib/uml/modules/* /mnt/lib/modules/

#3. 定制網絡 文件系統 終端 用戶

chroot /mnt

#3.1 網絡 /etc/network/interface

auto lo

iface lo inet loopback

auto eth0

iface eth0 inet static

address 192.168.1.2

netmask 255.255.255.0

gateway 192.168.1.1

#3.2 文件 /etc/fstab

/dev/ubda? /? ext3 defaults 0 1

proc????????? /proc? proc defaults 0 0

#3.3 終端 /etc/default/console-setup, 注釋掉這下面一句

#ACTIVE_CONSOLE=tty[1-6]

cd /etc/event.d/

rm tty[2-6]

mv tty1 tty0

#/etc/event.d/tty0 的最后一行,將tty1改為tty0

exec /sbin/getty 38400 tty0

#3.4 創建用戶,并加入sudoers

adduser hankjin

#修改/etc/sudoers

root??? ALL=(ALL) ALL

hankjin ALL=(ALL) ALL


4????? 開始搭建

首先使用uml_switch命令創建三個虛擬交換機, 同時自動在host上生成有一個tap,然后啟動五個User Mode Linux,同時連接到虛擬交換機上.

4.1??? 虛擬交換機

使用uml_switch命令虛擬三臺交換機:switch1, switchAswitchB, 其中:

switch1的網絡為10.0.0.0/24,啟動方式為

sudo uml_switch –tap tap1 –unix /tmp/switch1

switchA的網絡為192.168.11.0/24,啟動方式為

sudo uml_switch –tap tapA –unix /tmp/switchA

switchB的網絡為192.168.22.0/24,啟動方式為:

sudo uml_switch –tap tapB –unix /tmp/switchB

4.2??? 定制文件系統

User Mode Linux支持Copy On Write技術, 可以xxx,但是這里為了簡化環境,直接將上面制作的hank-fs拷貝一個復本即可, 因此, 對每個User Mode Linux,我們都先拷貝一個復本出來.

4.2.1??? serverA

首先從hank-fs拷貝一個復本 cp hank-fs hank-fs-AS

serverA有兩個網卡,一個連接switch1(eth0),一個連接switchA(eth1),因此啟動serverA的命令為

linux ubd0=hank-fs-AS eth0=daemon,,unix,/tmp/switch1 eth1=daemon,,unix,/tmp/switchA

?????? 啟動后設置serverA的網絡, sudo vi /etc/network/interface:

auto eth0

iface eth0 inet static

???????? address 10.0.0.10

???????? netmask 255.255.255.0

???????? gateway 10.0.0.1

auto eth1

iface eth1 inet static

???????? address 192.168.11.3

???????? netmask 255.255.255.0

4.2.2??? serverB

首先從hank-fs拷貝一個復本 cp hank-fs hank-fs-BS

serverB有兩個網卡,一個連接switch1(eth0),一個連接switchA(eth1),因此啟動serverB的命令為

linux ubd0=hank-fs-BS eth0=daemon,,unix,/tmp/switch1 eth1=daemon,,unix,/tmp/switchB

?????? 啟動后設置serverB的網絡, sudo vi /etc/network/interface:

auto eth0

iface eth0 inet static

???????? address 10.0.0.20

???????? netmask 255.255.255.0

???????? gateway 10.0.0.1

auto eth1

iface eth1 inet static

???????? address 192.168.22.1

???????? netmask 255.255.255.0

4.2.3??? clientA

首先從hank-fs拷貝一個復本 cp hank-fs hank-fs-A1

clientA有一個網卡,連接switchA(eth0),因此啟動clientA的命令為

linux ubd0=hank-fs-A1 eth0=daemon,,unix,/tmp/switchA

?????? 啟動后設置clientA的網絡, sudo vi /etc/network/interface:

auto eth0

iface eth0 inet static

???????? address 192.168.11.5

???????? netmask 255.255.255.0

???????? gateway 192.168.11.3

4.2.4??? clientB1

首先從hank-fs拷貝一個復本 cp hank-fs hank-fs-B1

ClientB1有一個網卡,連接switchB(eth0),因此啟動clientB1的命令為

linux ubd0=hank-fs-B1 eth0=daemon,,unix,/tmp/switchB

?????? 啟動后設置clientB1的網絡, sudo vi /etc/network/interface:

auto eth0

iface eth0 inet static

???????? address 192.168.22.3

???????? netmask 255.255.255.0

???????? gateway 192.168.22.1

4.2.5??? clientB2

首先從hank-fs拷貝一個復本 cp hank-fs hank-fs-B2

ClientB2有一個網卡,連接switchB(eth0),因此啟動clientB2的命令為

linux ubd0=hank-fs-B2 eth0=daemon,,unix,/tmp/switchB

?????? 啟動后設置clientB2的網絡, sudo vi /etc/network/interface:

auto eth0

iface eth0 inet static

???????? address 192.168.22.5

???????? netmask 255.255.255.0

???????? gateway 192.168.22.1

4.3??? 實現NAT

Server A負責將switchA內的工作站連入switch1的網絡.

Server A負責將switchA內的工作站連入switch1的網絡

Host則通過tap1switch1內的工作站連入host的網絡

4.3.1??? 設置serverA

編輯serverA的啟動腳本,sudo vi /etc/rc.local,sudo /etc/rc.local

iptables -F INPUT

iptables -F OUTPUT

iptables -F FORWARD

iptables -t nat -F POSTROUTING

iptables -t nat -F PREROUTING

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.11.0/24 -j MASQUERADE

4.3.2??? 設置serverB

編輯serverB的啟動腳本,sudo vi /etc/rc.local,sudo /etc/rc.local

iptables -F INPUT

iptables -F OUTPUT

iptables -F FORWARD

iptables -t nat -F POSTROUTING

iptables -t nat -F PREROUTING

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.22.0/24 -j MASQUERADE

?

4.3.3??? 設置host

host系統上設置tap1的轉發功能,從而使學習網絡的所有主機都可以連入互聯網.

#!/bin/bash

sudo ifconfig tap1 10.0.0.1 netmask 255.255.255.0

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

sudo iptables -F INPUT

sudo iptables -F OUTPUT

sudo iptables -F FORWARD

sudo iptables -t nat -F POSTROUTING

sudo iptables -t nat -F PREROUTING

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

?


5????? 測試

?

5.1??? 測試交換機

5.1.1??? 測試switch1

serverAping serverB, ping 10.0.0.20

serverAping host, ping 10.0.0.1

serverBping serverA, ping 10.0.0.10

serverBping host, ping 10.0.0.1

hostping serverA, ping 10.0.0.10

serverAping Internet, ping www.baidu.com

5.1.2??? 測試switchA

clientAping serverA, ping 192.168.11.3

serverAping clientA, ping 192.168.11.5

clientAping serverB, ping 10.0.0.20

clientAping host, ping 10.0.0.1

clientAping Internet, ping www.sina.com

5.1.3??? 測試switchB

serverBping clientB1, ping 192.168.22.3

clientB1ping serverB, ping 192.168.22.1

clientB2ping clientB1, ping 192.168.22.3

clientB2ping serverA, ping 10.0.0.10

clientB1ping host, ping 10.0.0.1

clientB2ping Internet, ping www.sina.com

5.2??? 測試NAT

5.2.1??? clientA

clientA-serverB

clientA-host

clientA-internet

5.2.2??? clientB

clientB1-serverA

clientB1-host

clientB2-internet

5.3??? 高級測試

5.3.1??? 測試×××

?

例如我們想讓clientB連入switchA的網絡,可以在serverA上安裝pptpd服務, clientB上安裝pptp客戶端,然后clientB就可以訪問switchA內的工作站了

首先在clientB1ping clientA, 不能ping, 接下來開始配置×××

首先在serverA上配置×××服務器:

serverA, sudo apt-get install pptpd, 然后配置分配的IP和用戶帳戶:

sudo vi /etc/pptpd.conf

localip: 192.168.11.20

remoteip: 192.168.11.21-29

sudo vi /etc/ppp/chap-secrets

hankjin?????? *?????? hjz???? *

sudo /etc/init.d/pptpd restart

?

然后在clientB1上配置×××客戶端

sudo apt-get install pptp-linux

sudo vi /etc/ppp/chap-secrets

hankjin?????? mypptp?????? hjz???? *

sudo vi /etc/ppp/peers/myserver

pty "pptp 10.0.0.10 --nolaunchpppd"

#mppe required,stateless

name hankjin

remotename mypptp

?

require-pap

refuse-mschap

require-mschap-v2

require-mppe-128

proxyarp

lock

nobsdcomp

novj

novjccomp

nologfd

debug

#ipparam pptp:XXXX

?

# do not require the server to authenticate to our client

noauth

?

persist

最后在clientB1上連接serverApptpd服務

sudo pppd call myserver

ifconfig

如果發現ppp0連接,表示×××服務創建成功,然后從clientB1ping clientA成功. clientAping clientB1也成功, clientB1已經成功潛入switchA的網絡.


1????? 常見錯誤

1)???? 創建文件系統失敗

2)???? 連接網絡失敗

3)???? NAT轉換失敗

轉載于:https://blog.51cto.com/cntway/649735

總結

以上是生活随笔為你收集整理的单机搭建学习网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。