VNCを介した対称NATおよびリモート管理の背後のIPv6トンネルの構成
少し前まで、私はLinuxでのリモートシステム管理のためのソリューションを探していました。 主な問題は、対称NATを使用するプロバイダーを通じてインターネットに接続されていることです。 つまり、インターネットからは利用できません。 検索すると、リモート管理用のいくつかのプログラムを見つけることができますが、原則として多くの費用がかかります。 gogonetとVNCを介したIPv6トンネルを使用して、このようなプログラムなしで外部にアクセスする方法を説明します。
既製のプログラム
検索に多くの時間を費やした後、いくつかのプログラムを見つけました。 そして、非営利的な使用のために無料のものが1つあります-これはTeamViewer 6です (ワインで動作します)。 それはうまく機能し、多くの機能がありますが、いくつかの欠点があります:彼自身が商用利用を計算しようとし、それを制限することができます。 実際に私はそれを個人的な目的のためにのみ使用していましたが、それは私に起こりました。 また、このプログラムは非商業的な使用について警告するウィンドウを常に表示しますが、これは少し邪魔です。
ワインを駆け抜ける
WindowsにはすばらしいプログラムAmmy Adminがあり、インターネット経由でリモートシステムに接続でき、ファイアウォールやNATを妨害しません。 同時に、サービスとしてインストールできるため、反対側のアクションが不要になります。起動、新しいコード、パスワードの管理側への転送は不要で、一度設定され、接続され、許可されます。
サウンドをオンにし、ファイルを転送し、さまざまな設定を構成することもできます。
最初のアイデアは、Ubuntuのワインの下で実行することです。 エラーは起動時に表示されますが、プログラムは動作しますが、オペレーターとしてのみ機能します(win-machinesの接続に使用します)。 つまり、Linuxで実行されているマシンを制御することはできません。
wineでさまざまなプログラムを試したところ、すべて動作することが判明しましたが、すべて1つの問題がありました。プログラムはLinux X画面をブロードキャストできません(音も問題です)。 ソリューションには別のソリューションが必要です。
解決策1-Teredo
トンネルテレド
プロバイダーには幸運な人もいましたが、Teredoトンネルオプション:IPv6 over IPv4は彼らにとっては良いでしょう。 ubuntuの下には、トンネルを作成するMiredoというプログラムがあり、その後、独自のIPv6アドレスが既にあります。 インストールするには、次を実行するだけです。
sudo apt-get install miredo
これで、住所を確認できます。
ifconfig ... teredo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link inet6 addr: 2001:0:53aa:64c:2ca9:1bc4:9253:b1e2/32 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:144 (144.0 B)
Test-ipv6.comも開いて、IPv6接続を確認できます。
Teredoは対称型NATでも動作しますが、発信接続でのみ-そこから外に出ることはできません。
2台のマシンに置いて、サイトが私のIPv6アドレスを正常に決定することを確認しました。 次に、最初にGoogleにpingを試みます。
ping6 -n ipv6.google.com
PING ipv6.google.com(2a00:1450:4001:c01::63) 56 data bytes
64 bytes from 2a00:1450:4001:c01::63: icmp_seq=1 ttl=59 time=85.2 ms
64 bytes from 2a00:1450:4001:c01::63: icmp_seq=2 ttl=59 time=79.8 ms
64 bytes from 2a00:1450:4001:c01::63: icmp_seq=3 ttl=59 time=82.2 ms
そして、お互い:
ping6 2001:0:53aa:64c:2ca9:1bc4:9253:b1e2
この場合にpingを実行すると、NATは非対称になり、teredoを使用できます。
私のpingは行かず、別のオプションを探す必要がありました。
解決策2-Freenet6
このトンネルは対称NATでも機能しますが、ここでは少し複雑です。
ウェブサイトgogonet.gogo6.comにアクセスし、 gogoNETに登録します。 次に、Linux用gogoCLIENTクライアントをダウンロードします。 サーバーにアクセスするために、すでに登録されています。 誰かがリンクを見つけられなかった場合: gogonet.gogo6.com/page/freenet6-registration
匿名アクセスがありますが、私は登録しましたが、無駄ではありません。 記事の最後で、その理由を説明します。
gogocプログラムのインストールに進みます。
tar -xzf gogoc-1_2-RELEASE.tar.gz
cd gogoc-1_2-RELEASE/
コンパイルのために、十分なlibssl-devパッケージがありません:
sudo apt-get install libssl-dev
コンパイルします:
make all
sudo make installdir=/usr/local/gogoc install
次に、gogoクライアントの構成を調整する必要があります。
sudo gedit /usr/local/gogoc/bin/gogoc.conf
useridとpasswdに、2番目の登録中に取得したデータを入力します(ボックスではなく名前があります)。
サーバーの変更:
server=amsterdam.freenet6.net
またはmontreal.freenet6.net (時々標準的な問題があります)。
認証方法の変更:
auth_method=any
残りはそのままです。 以下を確認できます。
cd /usr/local/gogoc/bin/
sudo ./gogoc
クライアントは、そのようなサーバーを知らないと伝え、キーの追加について尋ねます。amsterdam.freenet6.netは不明なホストです。そのキーを追加しますか?? (Y / N) 、同意する:Y.
次に、ifconfigコマンドを使用してインターフェイスを確認します。
tun Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet6 addr: 2001:5c0:1000:b::9f29/128 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:336 (336.0 B) TX bytes:56 (56.0 B)
2番目のコンピューターからのpingが実行されることを確認します:
ping6 2001:5c0:1000:b::9f29
トンネルの準備ができました。
X11VNC
現在、管理には、IPv6をサポートするVNCサーバーが必要です。
インストール:
sudo apt-get install x11vnc
接続マシンにVNCクライアントを
sudo apt-get install remmina
ます-remmina:
sudo apt-get install remmina
サーバーでx11vncを起動します。 私はこの行を実行します:
x11vnc -display :0 -forever -unixpw -noxrecord -noxfixes -ncache 10
このようなパラメーターは、ATI(セッションがクラッシュした)でグリッチを修正します。また、クライアントを切断した後もサーバーは動作し続け、UNIX認証が使用されます。
そして、リマインダを介して2番目のシステムから接続を試みます。VNCのタイプとアドレス2001:5c0:1000:b :: 9f29を示します。
これで、最初の接続の準備ができました。 1つの問題が残っています。
スタートアップとマシンのIPv6アドレスを見つける方法
ここでは、理想とはほど遠いと思いますが、うまくいきます。
インターネットに接続した後のGogocの起動と、シェルスクリプトを使用して誤って完了した場合の再起動。起動は/etc/rc.localに
/etc/autostart_gogoc &
行で登録しました。
autostart_gogocファイルの内容:
#!/bin/sh cd /usr/local/gogoc/bin while [ true ]; do gogoc=`ps ax|grep gogoc|grep -P -o "\d:\d\d\s\./gogoc"` if [ "$gogoc" = "" ]; then #echo " gogoc , " IP="0" while [ $IP = "0" ] do ping -c 3 www.ya.ru if [ $? -eq 0 ]; then echo "pinged_ok" IP="OK" fi sleep 10 done ./gogoc fi #echo "" sleep 10 done
エコーの前にコメントを削除し、ルートから(sudo経由で)開始して、その動作を確認できます。
x11vncスタートアップの場合、コマンド(上記を参照)をスタートアップ(スタートアップアプリケーション)に追加しました。
さらに、現在のIPを確認するために、次のことを行いました(誰でも独自のオプションを考え出すことができます)。
1.私のサイトの1つにあり、送信されたIPアドレスをテキストドキュメントに保存するPHPのスクリプト:
<?php
$d=$_POST['data'];
$x=implode("",file("ipsforme.txt"));
$y=array();
$y=explode("\r\n",$x);
$d=date("dmY H:i ").$d;
array_unshift($y,$d);
if (count($y)>200) {
array_splice($y,190);
}
$z=implode("\r\n",$y);
$a=fopen("ipsforme.txt","w");
fputs($a,$z);
fclose($a);
echo "OK";
?>
2.収集したものを見るためのPHPのスクリプト:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='ru' dir='ltr'>
<head>
<title> IP</title>
<meta http-equiv='content-type' content='text/html; charset=utf-8'>
</head>
<body>
<b> :</b><hr>
<?
#myipsview.php
$x=implode("",file("ipsforme.txt"));
$x=str_replace("\r","",$x);
$x=str_replace("\n","<br>",$x);
print $x;
?>
</body>
</html>
3.常に動作するpythonのスクリプト。IPアドレスを変更すると、マシンの名前とともにサーバーに送信されます(Windowsで動作し、python 2.6のみをインストールする必要があります)。
#!/usr/bin/python2.6 # -*- coding: utf-8 -*- import sys import re import os from socket import * import subprocess from httplib import HTTPConnection import time print "##########################################################" print "\n\n\n\n\n\n" lastinfo="" #sss=raw_input('pausa') print "Start Cycle" while 1: retcode = os.spawnlp(os.P_WAIT, "sh", "sh", "-c", "uname -n >/home/andrey/sendipinfo.txt") retcode = os.spawnlp(os.P_WAIT, "sh", "sh", "-c", "/sbin/ip addr show dev tun | grep inet6 >>/home/andrey/sendipinfo.txt") f=file('/home/andrey/sendipinfo.txt','r') lines=f.readlines() f.close() s='' for line in lines: line=line.strip('\n') s=s+' = '+line print s if (lastinfo != s) and (re.search('inet6.*\w{1,4}:\w{0,4}(:\w{0,4})+',s)): print "" lastinfo=s BOUNDARY="$Python-Essential-Reference$" CRLF='\r\n' closing='--'+BOUNDARY+"--\r\n" server='www.armavirportal.ru:80' xname='data' xvalue=s section = ['--'+BOUNDARY,'Content-disposition: form-data; name=%s' % xname,'',xvalue] st=CRLF.join(section)+CRLF content_size=len(st)+len(closing) conn = HTTPConnection(server) conn.putrequest('POST','/myips.php') conn.putheader('Content-type','multipart/form-data; boundary=%s' % BOUNDARY) conn.putheader('Content-length', str(content_size)) conn.endheaders() conn.send(st) conn.send(closing) r = conn.getresponse() responsedata = r.read() conn.close() print "GET RESPONSE: "+responsedata time.sleep(10) print " "
印刷出力は、使用時にどこでも削除できます。 確認のためにやった。
Xをロードして開始するには、自動実行するコマンドも追加しました。
sh -c /home/andrey/sendip.py
何がありますか
現在、Ubuntu(Mint)に3つのシステムがあり、インターネットに接続すると自動的にトンネルに再接続し、自分のサイトにアドレスを送信します。これはいつでも確認できます。 はい、不要なアクションを追加しますが、このシステムは無料で動作します。
作業の結果は次のようになります(http://www.armavirportal.ru/myipsview.php):
08/25/2011 19:30 = andrey = inet6 addr:2001:5c0:1400:b :: acdd / 128 Scope:General
08/25/2011 14:11 = neo = inet6 addr:2001:5c0:1400:a :: 1665/128スコープ:一般
08/25/2011 14:07 = neo = inet6 addr:2001:5c0:1400:a :: 11b7 / 128スコープ:一般
08/25/2011 09:46 AM = neo = inet6 addr:2001:5c0:1400:a :: 1677/128スコープ:一般
08/25/2011 09:31 = neo = inet6 addr:2001:5c0:1400:a :: 74d / 128 Scope:General
08/25/2011 08:43 = neo = inet6 addr:2001:5c0:1400:a :: 459/128スコープ:一般
08/24/2011 23:03 = neo = inet6 addr:2001:5c0:1000:a :: 233/128 Scope:General
08/24/2011 10:26 = neo = inet6 addr:2001:5c0:1000:a :: 90f / 128 Scope:General
08/22/2011 11:18 = = IPv6アドレス............:2001:5c0:1400:a :: 819(基本)
08/22/2011 11:18 = = IPv6アドレス............:2001:5c0:1400:a :: 819(トライアル)
Windowsからの最後の2行。
よりシンプル
この記事を書いたとき、私はまだ1つの機能について知りませんでした。 freenet6に登録すると、さらにusername .broker.freenet6.netという形式のアドレスを取得します。つまり、ipv6アドレスを知らないかもしれませんが、名前で直接接続します。 トンネルが個別のアカウントfreenet6になる各軸に登録し(同時にgogo6の1つのアカウントで可能である)、各システムのアドレスがあります。
作成したトンネルを名前で簡単に確認できます。
ping6 virtustilus5.broker.freenet6.net
また、実際に見たipv6-test.comページでも確認できます。
その結果、サイト上のpythonおよびphpスクリプトは不要になりました。
Windows用VNC IPv6
トンネルは、gogoCLIENTを介してLinuxよりもさらに速く簡単に上昇します。
Windowsでは、IPv6をサポートする無料のVNCサーバーはまだ見つかりません。
IPv6を備えたWindows Enhanced TightVNC Viewer VNCは正常に動作します。 証明書の検証をオフにし、コンピューターのアドレスを入力して接続します。
テレド
gogo6
Pythonドキュメント:httplib
Teamviewer
Ammyadmin
Join.me
ミレド
拡張されたTightVNCビューアー
ipv6-test.com
別のtest-ipv6.com