macOS 無法使用 127.0.0.2 的解決辦法

127.0.0.0/8 是保留給 loopback 網路卡使用的網段, 我們可以藉由 127.0.0.0/8 來模擬不同的IP以及測試網卡驅動是否正常, 在 Windows 跟 Linux 下 127.0.0.0/8 都可以正常運作, 但 macOS 下卻無法連線, 主要原因是因為 FreBSD家族預設只會 bind 127.0.0.1, 因此 127.0.0.2, 127.0.0.3 之類的都不會通.

我們可以透過下列指令將需要的 loopback IP 叫回來( 這邊用 127.0.0.2 作為範例)

sudo ifconfig lo0 alias 127.0.0.2 netmask 0xFFFFFFFF

指令執行成功後, 我們就會發現可以 ping 到 127.0.0.2 了

註: 重新開機設定會消失, 需要重新執行指令

Linux 設定 VLAN 802.1Q

在複雜網路環境中適度的使用 VLAN 會幫助我們降低管理複雜度, 當我們設定完 Switch 端 VLAN 設定後, 我們也必須調整電腦端的 VLAN 設定來接入 VLAN 網路, Linux 對於 VLAN 的支援非常穩定, 透過以下的方法我們便可以在 Linux 輕鬆使用 VLAN.

安裝相關套件

安裝 VLAN 套件

sudo apt-get install vlan

將 802.1q 模組載入 Kernel

modprobe 8021q

確認 Kernel 有正確載入 802.1Q 模組

sudo lsmod | grep -i 8021q 

有輸出就代表有正常載入 802.1Q 模組

8021q                  27844  0 
garp                   13117  1 8021q
mrp                    17343  1 8021q

設定網路卡

在我的網路環境中, 我有一張實體網路卡 eth0, 並且要設定兩張 VLAN 網卡, 分別為 VLAN 5 與 VLAN 10.

編輯 /etc/network/interfaces

# 將 eth0 網卡切入手動模式
auto eth0
iface eth0 inet manual
        pre-up ifconfig $IFACE up

# 網卡名稱格式為 Bridge 網卡.VLAN

# 建立 VLAN 5 網卡, 靜態網路設定
auto eth0.5 
iface eth0.5 inet static
        vlan-raw-device eth0  #Bridge 到 eth0
        # 以下為基本網卡設定, 依照需求設定即可
        address 10.10.10.254
        netmask 255.255.255.0

# 建立 VLAN 10 網卡, DHCP
auto eth0.10
iface eth0.10 inet dhcp
        vlan-raw-device eth0

設定完畢後重新啟動 networking

/etc/init.d/networking restart

若設定都正確, ifconfig 將會顯示設定好的 VLAN 網卡, 這樣我們就可以正常存取 VLAN 網路了

如何擷取 Windows Loopback 封包

在開發各種網路系統時, 不管是 安全分析, 流量分析, 協定分析…等都逃不了封包分析的命運, 在開發階段, 我們時常會建立 local server 進行測試, 前陣子因為特殊原因必須要分析封包時才赫然發現 Wireshark 在 Windows 上竟然無法擷取 loopback 介面的封包(127.0.0.1 之類的, 只要是本機持有的 IP 都不行), 根據 Wireshark 官方說法是不支援, 只好開始尋找其他方法.

在經過各種嘗試, 最終只剩下 NPacp, NetCap, RawCap 這三個工具可以達成我的目的, 網路上也有人提過 KB-839013 但實測後發現沒有任何效果.

最後我選擇了 RawCap, 因為他輕巧免安裝, 又可以產生 pcap 讓我繼續用 Wireshark 分析

RawCap

官方網站: Netresec
下載位置: RawCap

使用方法

程式一執行就會列出可以用的網路介面卡, 在這邊我的 LoopBack 卡是 7號


在選擇完介面後, 程式會詢問檔案名稱, 這邊我維持預設 dumpfile.pcap

開始擷取封包後, 只要按下 Ctrl+C 便可以停止錄製並退出程式

在 RawCap 的所在目錄就會出現 dumpfile.pcap, 這便是我們要的擷取結果, 使用 Wireshark 開啟就可以看到之前無法擷取的 loopback 封包