天天看點

netsh--windows下的端口轉發

參考:

http://blog.zer01.net/?p=112

我今天本來是看到學長們在做筆試題,有一個iptables的題,準備回來宿舍之後ssh到實驗室的ubuntu小雞子上學一下

iptables

的,怎麼變成學習

netsh

了[笑cry]。情況是宿舍的學長要用我的WIFI,而當我的windows連上外網之後,預設我的Mac是無法用WIFI通過我的windows連上我實驗室的小雞子的。得對我的windows加個端口轉發政策。于是正好可以學一下好久之前就對其感到有點神秘的windows自帶的

netsh

原來windows自帶了

netsh

這個工具可以進行在一張網卡的同一網段中進行端口轉發(但是我暫時用不到)。還可以進行同一主機兩個網卡之間的端口轉發。

windows 7上就可以直接用

netsh

了,在xp/2003的話,要先安裝ipv6。

netsh interface ipv6 install
           

注:如果在windows 7下用這個指令的話,會提示:

『找不到下列指令:interface ipv6 install。』

防火牆

我是說我之前怎麼老是ping不通我自己在宿舍基本隻作為一個路由器功能的windows呢,而且寫這個部落格之前我按照網上的部落格寫好了規則之後依然沒有生效呢,檢視我windows的監聽的端口

netsh--windows下的端口轉發

發現其實已經在

0.0.0.0

上監聽那個端口了。但是我用我的Mac掃我的windows,并沒有掃到開放的指定端口。

netsh--windows下的端口轉發

後來看看别人部落格裡提示的防火牆的問題,原來确實是由于我隐約感覺到的自己windows的防火牆政策的原因。按照網上部落格說的,

注:需要有管理者權限,防火牆需要關閉

。這次我就把防火牆關了。

# windows 7 及以上
netsh advfirewall set allprofiles state off
# xp/2003
netsh firewall set opmode disable
           

然後立馬就可以ping我的windows了。疑惑解開了。

netsh--windows下的端口轉發

然後也立馬就可以通過我的windows通路我在實驗室的小雞子了。也就是說

netsh

配置生效了。

netsh--windows下的端口轉發

注意這裡ssh的目标就不是你真正要連的那台機器了,而是你windows與你的PC同網段的那個網卡上的IP和打開的端口了。因為這裡我是用我的windows發出WIFI,然後我windows的無線網卡IP為

192.168.23.1

,當然我windows的有線網卡的IP是172的,跟我要連的實驗室的小雞子的IP是一個網段的(學校内網),到時候要ssh就ssh到我的windows就好了。

netsh指令

删除已有的netsh端口轉發政策

netsh interface portproxy delete v4tov4 listenport=xxx
           
netsh--windows下的端口轉發

這裡按格式來說,是要寫

listenaddress

的。如果不寫的話,就是預設

0.0.0.0

。(因為當時加這個政策的時候沒有寫

listenaddress

,然後就在

0.0.0.0

監聽了)。

添加一條netsh規則

netsh interface portproxy add v4tov4 listenaddress= listenport=xxx connectaddress=xx.xx.xxx connectport=xxx
           
netsh--windows下的端口轉發

檢視已有的netsh規則

關閉了防火牆之後确實掃到的端口多了。

順便看了一下,

nmap

的掃描結果也沒那麼準啊。

我明明打開了某2開頭端口,但是并沒有掃到(也許用

nmap -Pn [ip]

的時候

nmap

掃的有點匆忙,漏了一些)。

netsh--windows下的端口轉發

直到我用

-p

選項指定了掃哪個端口區間的時候,才掃到了。

我雖然确實打開了那些端口,但是并不是

nmap

所顯示的什麼IIS,NFS-or-IIS,我并沒有裝IIS。

然後想到,

netsh

中的單詞『portproxy』,顧名思義,不就是端口代理嗎,也就是四層代理。

下次弄一下linux下的四層代理。