LAN内の他のインスタンスに接続された1つのawsサーバーにsoftethervpnサーバーを実装しました。 ssh [email protected]
で問題なくサーバーにSSH接続できます。私は従った このガイド
私の目標は、vpnを使用して、ラップトップからssh [email protected]
またはhttp://hostname.domainname.com
を使用してLAN上のリモートawsサーバーにアクセスできるようにすることです。 sshは現在機能していますが、Webページを取得する方法がわかりません。 VPNを介してWebページが必要な理由は、Webサイトが管理バックエンドであり、VPNIPアドレスからのユーザーへのアクセスを制限したいからです。
Sysctlにnet.ipv4.ip_forward = 1
を追加しました
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
route add -net 10.0.0.0/8 gw 10.0.1.10
ifconfig -a
vpn_tun0 Link encap:Ethernet HWaddr 00:ac:a3:58:1f:78
inet addr:10.0.1.11 Bcast:10.0.1.255 Mask:255.255.255.0
inet6 addr: fe80::2ac:a3ff:fe58:1f78/64 Scope:Link
netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 vpn_tun0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
vpnserverのサーバー上:
DhcpTable
ID |21
Leased at |2015-06-08 (Mon) 08:49:46
Expires at |2015-06-08 (Mon) 14:23:06
MAC Address |00-AC-A3-58-1F-78
Allocated IP |10.0.1.11
Client Host Name|Inspiron-1564
私のラップトップvpnclientで
VPN Client>accountlist
AccountList command - Get List of VPN Connection Settings
Item |Value
----------------------------+----------------------------------------------------
VPN Connection Setting Name |my_connection
Status |Connected
VPN Server Hostname |hostname.domainname.com:5555 (Direct TCP/IP Connection)
Virtual Hub |lan-internal
Virtual Network Adapter Name|tun0
わかりました。次から続きます https://superuser.com/questions/923747/vpn-ip-forwarding-and-nat/925570#92557 本当にばかげた質問があるかもしれませんが、しかし、必要なのがhttp/httpsのような特定のポートへのアクセスだけである場合、SSHトンネリングを試しましたか? VPNを設定するよりもはるかに簡単です。最終的には、あるマシンから別のマシンにSSHで接続し、ターゲットマシンに何かへの接続を確立させ、その接続をローカルマシンに転送します。
つまり、プライベートマシンBBBBにアクセスできるマシンAAAAのパブリック(DMZ)部分にアクセスでき、HTTPSサービス(ポート443)に接続し、デスクトップに443で実行されているサービスがすでにあると仮定します。 、したがって、サービスに4443でローカルにリッスンさせることになります。
ssh -L4443:B.B.B.B:443 [email protected]
次に、ログインしてローカルブラウザを実行し、 https:// localhost:444 に移動します。または、必要に応じて、hostsファイルにエントリを追加し、127.0.0.1を意図した.vhost.nameに送信して次に、 https://intended.vhost.name:4443/ に移動します。
本当にVPNが必要な場合は、...
ラップトップからトンネルのローカル側と反対側の両方のIPアドレスにpingを実行できますか?反対側のサイトネットワーク上の別のマシンにpingを実行できますか?トレースルーティングを試すことができない場合は、トンネルのローカルサイトとリモートサイトからエコーが返されるかどうかを確認してください(そうでない場合は、ルーティングが間違っています)。
さまざまなネットワークアドレスは何ですか?ルートに、トラフィックを送信する予定のデバイスを教えてみてください。そうしないと、推測できる必要があります。
私はこれを読み直していて、私が提案したことを実行しようとしている人にとって簡単になるかもしれないいくつかのメモを追加すると思いました:-
https://intended.vhost.name:4443/ にアクセスしてそのトンネルを使用できるようにするには、hostsファイルにエントリを追加する必要があります。 LinuxではWindowsの/ etc/hostsはc:/ windows/system32/drivers/etc/hostsです。どちらの方法でも、ファイルを保存するには管理者権限が必要です(Linuxの場合はSudo、Windowsの場合は管理者としてメモ帳を開きます)。次に、次の行を追加します。-
127.0.0.1 intended.vhost.name
私が言及したもう1つのことは、ファイアウォールに穴を開けることができるリスニングトンネルをマシンに設定することでした。前に説明したように、ssh -L4443:BBBB:443 adminuser @ AAAAを実行すると、マシンAAAAでsshターミナルが開き、その間、ローカル(-L)ポート127.0.0.1:4443からBBBB:443( 127.0.0.1が含まれます)。ローカルマシンがC.C.C.Cであり、そのIPでポート4443を開きたい場合、他のマシンがアクセスできるようにするには、次のようにします。-
ssh -LC.C.C.C:4443:B.B.B.B:443 [email protected]
ここで、-Tパラメーターを追加すると、sshの動作が変更され、ssl接続が開かれ、次にトンネルが開かれ、その中でターミナルが開始されないことに注意してください。
以前にこれを行ったときは、ローカルマシン(たとえばtunneluser)でユーザーをセットアップし、〜tunneluser/.sshにそのユーザーのsshキーのセットを作成してから、ファイル〜tunneluser/.ssh /id_rsa.pubがリモートマシン〜adminuser/.ssh/authorized_keysにリストされている場合、パスワードの入力を求めずにssh接続が開始されます。セキュリティ機能として、/ bin/falseをシェル(/ etc/passwd内)として使用してtunneluserをリモートでセットアップできます。その後、-Tパラメーターを見逃すと接続が失敗します。
これを実装する簡単な方法は、ネットワークの後に実行される/etc/init.dのスクリプトに含めることです(通常はrc3.dで)。ただし、(rootとして実行することは避けてください)セキュリティのレイヤーを使用することをお勧めします
Sudo -u tunneluser "ssh -T -i/home/tunneluser/.ssh/id_rsa.pub -LC.C.C.C:4443:B.B.B.B:443 [email protected]"
ただし、リッスンするIP(上記の:4443)が「特権ポート」である場合(つまり、システムサービスで通常使用される範囲内にある場合)、取得するにはsshをrootとして実行する必要があります。そこで聞く許可。
ウィンドウユーザーは、 https://C.C.C.C:444 にアクセスするだけで、 https://B.B.B.B:44 にあったサイトが表示されます。
C.C.C.Cのマシンに:443をブロックするサービスがない場合は、:4443の代わりにそれを使用すると https://C.C.C.C は https://B.B.B.B と同等になります
余談ですが、意図が逆転した場合、CCCCにアクセスできるマシンを使用していて、BBBBにアクセスできるユーザーがマシンAAAAを介してDMZに穴を開けたいとします。トンネル経由でCCCCにアクセスできますが、直接アクセスすることはできません。-Lの代わりに-Rを使用します(リスニングソケットはトンネルのローカル側ではなくリモートにあります)。使用方法を示すために-Tを含めます。 。
ssh -T -RB.B.B.B:4443:C.C.C.C:443 [email protected]
Sshとhttpに必要なルーティングに違いはありません。どちらもTCPで実行されており、基盤となるIPトラフィックでトリックを実行していません。
あなたの質問によると、両方が同じホスト名を使用していますが、そのホスト名が1つまたは複数のIPアドレスに解決されるかどうかについては言及していません。 telnet
コマンドを使用して、サーバーのポート22とポート80の両方への接続を確立できるかどうかを確認できます。また、接続先のIPアドレスも表示されます。
質問から、VPNサーバーとまったく同じホスト名でsshサーバーとhttpサーバーを実行していることがわかります。それは問題かもしれません。ここでの本当の問題は、同じホスト名を使用しているということではなく、同じIPアドレスを使用しているということです。同じIPアドレスを指す異なるホスト名を使用した場合でも、問題が発生する可能性がありますが、ホスト名が異なると問題の原因がわかりにくくなります。
VPNサーバーと同じIP上のサービスに接続することが問題になる可能性がある理由は、ルーティングに関係しています。問題は、VPNを介してトラフィックを転送するルーティングテーブルエントリがVPNサーバーのIPアドレスもカバーしている場合、VPNサーバーへのパケットはネットワーク経由ではなくVPNインターフェイスに送信されることです。これにより、パケットがループを一周するたびにもう一度暗号化されて少し大きくなるルーティングループが導入されますが、宛先に近づくことはありません。
一部のVPNソリューションがこれを回避するために使用する1つのソリューションは、他の変更を行う前に、VPNサーバーのIPのみをカバーするルーティングテーブルエントリを作成することです。そうすれば、VPNサーバーへのトラフィックがVPNを通過することはありません。ただし、まったく同じIPでホストされている他のサービスへのトラフィックも、VPNを通過することはありません。
これに対する最も簡単な解決策は、2つの異なるIPアドレスを使用して、同じボックスでホストされているVPNおよびその他のサービスにアクセスすることです。通常、VPNサーバーには十分なIPアドレスが割り当てられているため、この目的に使用できる別のIPアドレスがあります。
では、なぜhttpではなくsshで機能するのでしょうか。あなたの質問の情報は1つの考えられる理由を示しています。
VPNIPアドレスから接続しているユーザーだけがhttpサービスにアクセスできるように制限したいとのことです。これらのフィルターを既に配置している場合は、それが理由である可能性があります。接続は単にVPN接続を経由していないため、フィルターによってブロックされます。 httpではなくsshを使用する場合に機能する理由は、VPN範囲だけでなく任意のIPアドレスからの接続を許可するようにsshdが構成されているためである可能性があります。
別の考えられる説明は、sshサービスとhttpサービスが同じIPアドレスにバインドされていないことです。たぶん、sshは任意のアドレスにバインドされ、httpは1つの特定のアドレスにのみバインドされます。
これらの2つの理由は、考えられる説明の完全なリストではなく、質問の情報から最も可能性が高いと思われる理由です。