• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用Linux建立IP隧道

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    使用Linux建立IP隧道 隨著互聯網中IPv4可用地址的日益減少,越來越多的企業開始采用NAT方式上網,可用公網IP地址越來越少,而通過互聯網訪問內部 服務器 的 需求 確不斷增加,因此本文對 linux 環境下建立通過互聯網的IP隧道的方法,以實現對內部服務器的訪

    使用Linux建立IP隧道

        隨著互聯網中IPv4可用地址的日益減少,越來越多的企業開始采用NAT方式上網,可用公網IP地址越來越少,而通過互聯網訪問內部服務器需求確不斷增加,因此本文對linux環境下建立通過互聯網的IP隧道的方法,以實現對內部服務器的訪問進行一些初淺的探討,希望能起到拋磚引玉的作用。

    方法一:基于SSH的加密通道

        SSH (Secure Shell)是一套安全的網絡連接程序,它可以實現通過網絡遠程登錄其他系統,它就是加密的telnet協議。但是OPENSSH除了具有遠程登錄功能以外,更可以建立加密IP隧道。

        我們這里假設Alice.org服務器位于某個企業網的內網,其IP地址為192.168.2.200,它通過NAT方式可以訪問互聯網。我們現在需要通過位于互聯網上的名字為bob.org的機器里訪問Alice,也就是遠程登錄Alice。這時候我們就需要在bob和alice之間建立IP隧道。我們首先登錄Alice,執行命令:

    # ssh -R 11022:127.0.0.1:22

        該命令表示登錄服務器211.1.1.1,并將服務器的11022定向為本地的22號端口。執行完該命令以后,會提示輸入ideal用戶密碼,輸入以后就會登錄到遠程服務器bob。這時在bob上netstat -ln就會發現11022端口監聽,保持從alice到bob的ssh連接不斷開。從互聯網任何位置登錄服務器bob以后,我們可以通過該隧道登錄到alice服務器,執行以下命令:

        # ssh localhost -p 11022

        該命令表示連接本地的11022端口,因為我們已經創建了從alice到bob的隧道,因此連接本地的11022端口實際上就是通過隧道訪問alice的22端口號。

        這樣通過這個隧道就可以實現登錄位于內部網的服務器alice,但是因為ssh命令中指定了源端口,這種隧道一般只能支持一種協議,對于特定應用則具有加密帶來的安全性的優點,但靈活性則不夠,而且為了保證隧道暢通,從alice到bob的ssh連接不能斷開,也就意味著用戶不能退出alice,否則隧道就會關閉。

    方法二:使用vtun建立IP隧道

        VTun (Virtual TUNnel,http://vtun.sourceforge.net)是一個功能很強的軟件,可以利用它來建立 IP虛擬隧道,而且隧道的數目可以不受限制,完全依照機器的能力而定,并且在此基礎上應用上可以實現VPN、移動IP等功能。

    Vtun所支持的通道并且具有多種功能特性:

    • 加密:支持基于CHAP的認證、并采用BlowFish 128bit密鑰。
    • 壓縮:支持zlib、lzo等多種壓縮算法。
    • 通信整形:平臺無關,允許分別限制進入和流出通道的速率。

        Vtun支持以下類型通道:

    • IP tunnel (tun):支持ppp的IP隧道。
    • 以太網隧道(Ethernet tunnel):支持可以實現以太網封裝的各種協議,如:IPX、Appletalk、Bridge等。
    • 串口通道(Serial tunnel,tty):支持串行電纜的傳輸方式,如:PPP、SLIP等。
    • 管道通道(Pipe tunnel,pipe):支持所有能使用Unix管道的程序。

        Vtun支持多種平臺,包括:Linux、BSD以及 Solaris。

    下載軟件:

       

    網絡介紹

        bob.org擁有固定ip(211.1.1.1),所以作為vtun的服務器端。alice.org沒有固定的ip,采用的是NAT接入方式,因為沒有固定公網IP地址,也沒有域名。alice.org應該作為VPN的客戶端,通過vtund連接bob.org服務器,建立VPN通道。

        首先確保兩臺服務器都允許IP forwarding。這點可以通過運行命令:

            # /sbin/sysctl -w net.ipv4.ip_forward=1

        如果希望永久打開,則可以通過編輯/etc/sysctl.conf文件,將其中的net.ipv4.ipforward=0行改成net.ipv4.ipforward=1來實現。

    安裝tun設備

        在安裝vtun之前我們首先要安裝虛擬通道點到點設備(Virtual Point-to-Point(TUN) and Ethernet(TAP) devices),將會在/dev中產生兩個虛擬通道設備/dev/tunX(字符設備)和tunX(virtual Point-to-Point interface,虛擬點到點接口)。
    安裝vtun-1.1.tar.gz:

    1. 解壓軟件:

    # tar xvfz tun-1.1.tar.gz

    2. 配置:

    # cd tun-1.1
    # ./ configure
    注意:安裝tun需要系統安裝有和當前內核版本一致的內核源代碼,因此建議安裝位于安裝光盤的內核源代碼RPM包。

    3. 安裝:

    # make install

    4. 加在內核模塊

    # modprobe tun

        如果希望系統啟動時自動加載該模塊,則編輯/etc/modules.conf,添加:

    alias char-major-90 tun #2.2.x內核
    alias char-major-10-200 tun #2.4.x內核
     

        這樣就完成了對ip隧道驅動tunX的安裝。查看內核模塊,看tun是否被正確安裝:

    # lsmod
    Module Size Used by
    tun 4064 3

    安裝Vtund

        解壓縮:

    #tar xvfz vtun-2.6.tar.gz
    #cd vtund

        配置:

            # ./configure --disable-lzo --disable-zlib --disable-shaper

    注:我們這里不打算壓縮和流量成形,因此需要帶這些參數,如果希望支持壓縮,則需要先安裝lzo或者zlib軟件。

         編譯安裝:

            # make install

        默認情況下,vtund被安裝在/usr/local/sbin/目錄下,而默認的配置文件則為/usr/local/etc/vtund.conf中。
    需要在兩臺機器上分別安裝vtund和tun驅動,其中bob.org服務器上的vtund以服務器方式運行,而alice.org的vtund以客戶端方式運行。

    vtund.conf配置文件說明:

        vtund.conf文件是vtund配置文件。Vtund.conf文件格式為:

    name {
    keyword value;
    keyword value;
    ..
    }

    關鍵字定義值后的分號是必須的,name后必須有完整的{}。Name可以有以下幾個值:

     options:定義通用選項,例如端口號等信息;
     default:所有會話的默認值;
     session(可以為任意名,用于識別一個會話):指定該會話的特定值,用以覆蓋default中的定義。

    下面是作為作者實際運行環境中以服務器方式運行的vtund.conf的內容:

    options { # bob.org,隧道IP地址為10.0.2.2
         port 5000; # vtund服務器監聽端口
         ppp /usr/sbin/pppd;
         ifconfig /sbin/ifconfig;
         route /sbin/route;
         firewall /sbin/ipchains;
         # vtund需要調用的各種程序的路徑信息;
    }

    # 默認會話選項
    default {
         type tun; #
         proto udp;# 下層采用UDP協議
         comp no; # 不對會話壓縮
         encr no; # 不對會話加密
         keepalive yes #保證連接一直激活;

         alice { # 主機alice建立的會話特定選項,可以覆蓋默認會話選項的配置
              pass alice; # 回話建立密鑰
              type tun; # 通道類型為IP隧道方式
              proto tcp; # 采用下層tcp協議
              comp no; # 不對會話壓縮
              encr no; # 不對會話加密
              keepalive yes; # Keep connection alive

         up {#連接建立時,首先應該運行的命令
              ifconfig \"%% 10.0.2.2 pointopoint 10.0.1.2 mtu 1450\";
              #首先激活接口,其中采用ppp建立連接,ppp本地IP為10.0.2.2,
              #而遠程IP分配為10.0.1.2。
              program /sbin/arp \"-sD 10.0.1.2 eth0 pub\"; #配置arp表項
              route \"add -net 10.0.1.0 netmask 255.255.255.0 gw 10.0.2.2\"; # 添加路由
         };
         down {#連接建立時,首先應該運行的命令
              program \"/sbin/arp -d 10.0.1.2 -i eth0\";
         };
    }

        vtund的更詳細說明請參考man vtund.conf的幫助手冊內容。

        下面是作為作者實際運行環境中以客戶端方式運行的vtund.conf的內容:

    客戶端(yyy.org VPN_IP=10.0.1.2):

    options {

    port 5000;
    ppp /usr/sbin/pppd;
    ifconfig /sbin/ifconfig;
    route /sbin/route;
    firewall /sbin/ipchains;

    }

    alice {

    pass alice;
    keepalive yes;

    up {

    ifconfig \"%% 10.0.1.2 pointopoint 10.0.2.2 mtu 1450\";
    program /sbin/arp \"-sD 10.0.2.2 eth0 pub\";
    route \"add -net 10.0.2.0 netmask 255.255.255.0 gw 10.0.1.2\";
    firewall \"-A forward -s 10.0.0.0/24 -d 10.0.2.0/24 -j ACCEPT\";

    };

    down {

        firewall \"-D forward -s 10.0.0.0/24 -d 10.0.2.0/24 -j ACCEPT\";
        program \"/sbin/arp -d 10.0.2.2 -i eth0\";

    };
    }

    啟動vtund

        服務器端(bob.org):只須以root身份執行/usr/sbin/vtund -s就可以了,如果希望系統啟動后自動建立VPN通道,可以將這個命令加入/etc/rc.d/rc.local中。

        客戶端(alice.org):只須以root身份執行/usr/local/sbin/vtund alice bob.org就可以了,如果希望系統啟動后自動建立VPN通道,可以將這個命令加入/etc/rc.d/rc.local中。

        如果連接建立起來以后,在alice上運行ifconfig應該有以下的輸出:

    tun0 Link encap:Point-to-Point Protocol
    inet addr:10.0.1.2 P-t-P:10.0.2.2 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1450 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:10
    RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

        可以看到,系統多了一個網絡接口tun0,其IP地址為10.0.1.2,而對端(服務器端)IP地址則為10.0.2.2。
    這時在alice或者bob上,可以建立靜態路由信息或者直接連接對端的網絡或主機,實現跨越互聯網的VPN隧道,當然該隧道并沒有加密。

        注:如果在客戶端運行vtund alice bob.org后連接無建立,則應該注意查看內核是否加載了tun0模塊。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>