Debian

Debian 9 虛擬網路適配器 - 適用於本地但不適用於遠端?

  • October 16, 2018

我正在嘗試在遠端外部伺服器和本地電腦之間建立 IPSEC 隧道。我的遙控器在數據中心有一個裸露的公共 IP4。我附近的伺服器有一個本地 NAT 隱藏 192.168.xy 地址,但是我已將所有需要的埠和協議轉發給它;UDP 500、UDP 4500、啊、esp,以及刪除路由器助手綁定。兩者都在執行 Debian 9 Stretch。我的路由器很好,已經解決了。遠端伺服器可以使用 nmap 在 ESP、AH 和 IKE 上看到本地。

在本地,我這樣做了(內部 100 範圍 IP 已更改)

modprobe dummy
ip link add name dummy0 type dummy
ip address add 100.64.1.1/32 dev dummy0

當我這樣做的時候

ifconfig

它顯示為這樣

dummy0: flags=195<UP,BROADCAST,RUNNING,NOARP>  mtu 1500
       inet 100.64.1.1  netmask 255.255.255.255  broadcast 0.0.0.0
       inet6 fe80::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
       ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
       RX packets 0  bytes 0 (0.0 B)
       RX errors 0  dropped 0  overruns 0  frame 0
       TX packets 189  bytes 70950 (69.2 KiB)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

當我們去外部伺服器時,

modprobe dummy

它顯示在 lsmod 中:

root@host:~# lsmod  | grep dummy
dummy                  16384  0
root@host:~#

,並且 ifconfig 命令在執行一組類似的後續命令後顯示沒有虛擬虛擬乙太網埠。

為什麼 dummy0 不顯示?

有什麼想法有什麼問題嗎?

$$ Edit- added 13/10/2018 22:18 BST $$ 為了清楚起見,我添加了此圖。這就是我要設置的: 在 Debian 9 上使用 StrongSwan 描述數據中心到本地託管的 IPSEC 隧道解決方案. Cyrus 複製的隧道已啟動。

最初選擇“虛擬”eth 適配器的原因如下所述:

https://wiki.strongswan.org/issues/722

“無需創建額外的介面(如 TUN)或別名(如 eth0:1,無論如何這是一個舊概念)。如果您想在 IPsec 隧道中使用私有 IP 地址,只需將它們添加到現有介面之一(eth0 或 lo)使用 ip addr add”。

因此,我需要將隧道 IP 端點綁定到適配器。我不想將它綁定到 eth0,因為它承載了伺服器的公共 IP。將它綁定到 lo 似乎是“錯誤的”。所以我最初選擇嘗試創建dummy0。

從具有許多不同發行版和平台的人的經驗來看,虛擬界面似乎間歇性地不可靠,並且很難在啟動時腳本中可靠地啟動。這也是我發現的。

https://bugzilla.redhat.com/show_bug.cgi?id=1120823

https://askubuntu.com/questions/994669/why-does-ip-link-add-not-work-in-rc-local

https://unix.stackexchange.com/questions/335284/how-can-we-create-multiple-dummy-interfaces-on-linux

https://community.nethserver.org/t/virtual-network-interface-for-virtual-machines/7728/10

我的工作解決方案創建了一個 TUN 設備。即使沒有數據包流過它,它也可以作為每個端點的 IP 地址的可靠綁定點。雖然這仍然不是推薦的做法,但我發現它提供了關於為什麼地址綁定到它的明顯洞察力,當你輸入

ifconfig 

TUN 在系統啟動腳本中很容易且可靠。

在我的問題圖中,將 dummy0: 替換為 tun0: 以獲得有效的解決方案。

使用這樣的東西:

ip tuntap add name tun0 mode tun
ip link set dev tun0 up
ip address add 100.64.2.1/32 dev tun0
route add -net 100.64.1.0/24 gw 100.64.2.1

將 IP 端點綁定起來。

$$ Edit 17/09/2018 00:50 $$Cyrus 郵箱複製現在執行良好。

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