Ubuntu

嘗試使用 softether vpn 客戶端和 iptables nat ip_forwarding 連接到遠端區域網路中的伺服器

  • November 5, 2015

我在一個連接到 LAN 中其他實例的 aws 伺服器上實現了一個 softether vpn 伺服器。ssh myname@10.0.1.10我可以毫無問題地通過 ssh 進入伺服器。我按照本指南

我的目標是允許我使用ssh myname@hostname.mydomain.comhttp://hostname.domainname.com從我的筆記型電腦使用 vpn 訪問 LAN 上的遠端 aws 伺服器。ssh 現在正在工作,但我不知道如何獲取網頁。我想要通過 vpn 訪問網頁的原因是該網站是一個管理後端,我想限制來自 vpn IP 地址的使用者的訪問。

我添加net.ipv4.ip_forward = 1到 sysctl 和

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

網路統計 -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 的伺服器上:

DHCP表

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#925570開始,我可能會問一個非常愚蠢的問題,但如果你只需要訪問到特定埠,例如 http/https 您是否嘗試過 SSH 隧道?這比設置 VPN 容易得多。最終,您從一台機器 ssh 到另一台機器,然後讓目標機器與某物建立前向連接,並將該連接轉發回您的本地機器。

因此,假設您可以訪問機器 AAAA 的公共(DMZ)部分,該機器又可以訪問私有機器 BBBB,並且您想要連接到 HTTPS 服務(埠 443),並假設您的桌面已經有一個在 443 上執行的服務,因此您將讓服務在 4443 上本地偵聽。

  ssh -L4443:B.B.B.B:443 adminuser@A.A.A.A

然後登錄,執行本地瀏覽器並轉到https://localhost:4443或者如果您願意,可以在您的主機文件中添加一個條目,將 127.0.0.1 發送到預期.vhost.name 然後轉到https://預期的.vhost.name:4443/

如果你真的需要一個VPN,那麼……

你能從你的筆記型電腦上同時ping通隧道的本地和對端的IP地址嗎?您可以在對面站點網路上 ping 另一台機器嗎?如果您無法嘗試對其進行跟踪路由,請查看是否從隧道的本地和遠端站點收到回顯(如果沒有,則說明您的路由錯誤)。

各種網路地址是什麼?您可以嘗試告訴路線,您希望它在哪個設備上發送流量,否則它必須能夠推斷。

我正在重新閱讀這篇文章,並認為我會添加一些註釋,這可能會讓任何試圖遵循我建議的人更容易:-

為了能夠訪問https://intended.vhost.name:4443/並擁有該隧道,您需要在主機文件中添加一個條目。在 Linux 上,在 Windows 上是 /etc/hosts,它是 c:/windows/system32/drivers/etc/hosts 無論哪種方式,您都需要管理員權限來保存文件(對於 linux,sudo,在 Windows 上以管理員身份打開記事本)。然後添加以下行:-

127.0.0.1        intended.vhost.name

我提到的另一件事是在機器上設置監聽隧道,它可以在防火牆上打一個洞。如前所述,執行 ssh -L4443:BBBB:443 adminuser@AAAA 將在機器 AAAA 上打開一個 ssh 終端,這樣做時,會將流量從本地(-L)埠 127.0.0.1:4443 隧道傳輸到 BBBB:443( 127.0.0.1 是隱含的)。假設您的本地機器是 CCCC,並且您想在該 IP 上打開埠 4443,以便其他機器訪問您可以這樣做:-

ssh -LC.C.C.C:4443:B.B.B.B:443 adminuser@A.A.A.A

這裡值得注意的是,如果添加 -T 參數,則更改 ssh 的行為,打開 ssl 連接,然後是隧道,而不是在其中啟動終端。

當我之前完成此操作時,我在本地電腦上設置了一個使用者(比如說隧道使用者)並在 ~tunneluser/.ssh 中為他創建一組 ssh 密鑰,然後確保文件 ~tunneluser/.ssh/id_rsa.pub 是列在遠端機器 ~adminuser/.ssh/authorized_keys 中,則 ssh 連接將啟動而不提示輸入密碼。作為一項安全功能,您可以遠端設置隧道使用者,使用 /bin/false 作為他的 shell(在 /etc/passwd 中),如果您錯過 -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 tunneluser@A.A.A.A"

但請注意,如果您要偵聽的 IP(上面列出的 :4443)是“特權埠”(即它在系統服務通常使用的範圍內),您需要以 root 身份執行 ssh,以獲取允許在那裡聽。

然後,任何視窗使用者只需訪問https://CCCC:4443,他們就會看到https://BBBB:443上的站點。

如果 CCCC 的機器沒有服務阻塞 :443,請使用它而不是 :4443 並且https://CCCC將等同於https://BBBB

順便說一句,如果意圖相反,假設你在一台可以訪問 CCCC 的機器上,你想通過機器 AAAA 在 DMZ 上打一個洞,這樣可以訪問 BBBB 的使用者可以通過隧道訪問 CCCC,而不能要直接訪問它,請使用 -R 而不是 -L (並且偵聽套接字位於遠端,而不是隧道的本地端)。我包括 -T 以顯示它是如何使用的。

ssh -T -RB.B.B.B:4443:C.C.C.C:443 adminuser@A.A.A.A

引用自:https://serverfault.com/questions/697438