允許 OpenVPN 透過特定連接埠 - CentOS 6.5

允許 OpenVPN 透過特定連接埠 - CentOS 6.5

我擁有一台 VPS (CentOS 6.5)。我已經在這台伺服器上安裝了 OpenVPN。一切正常,我可以連接和衝浪等1.2.3.4。當我連接到我的 VPS 時,我的 IP 是1.2.3.4

我還安裝了 OpenERP(在同一個 VPS 上),它在連接埠 8069 上運行。

我想要實現的是阻止連接埠 8069 上除 VPN 流量之外的所有流量。因此,我必須使用 OpenVPN 連接到我的 VPS 才能存取http://1.2.3.4:8069.

我在網上嘗試了幾個 iptables 教程,但都不起作用。

例如:

iptables -A INPUT -p tcp -s 1.2.3.4 --dport 8069 -j ACCEPT 
or 
iptables -A INPUT -p tcp -s  10.8.0.0/24 --dport 8069 -j ACCEPT
or
iptables -I INPUT \! --src 10.8.0.0/24 -m tcp -p tcp --dport 8069 -j DROP
or
iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 8069 -j DROP

這些都是例子。我嘗試了更多規則。我遵循的所有教程都會阻止連接埠 8069 上的所有流量,即使我使用 OpenVPN 連接到我的 VPS,我也無法存取http://1.2.3.4:8069

有誰知道如何阻止連接埠 8069 上除我的 VPN 連線之外的所有流量?我該如何實現這個目標?

我的 server.conf 是:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
user nobody
group nobody
keepalive 5 30
cipher AES-256-CBC   
comp-lzo
persist-key
persist-tun
verb 5

我的客戶端配置是:

dev tun
client
proto udp
remote 1.2.3.4
port 1194
resolv-retry infinite
nobind
redirect-gateway def1
persist-key
persist-tun
ca ca.crt
cert nika-pc.crt
key nika-pc.key
cipher AES-256-CBC   
comp-lzo
ns-cert-type server
verb 5

提前致謝。

編輯:

輸出:iptables -L -n -v

http://pastebin.com/RhzFBG8R

輸出:iptables -L -n -v |頭

http://pastebin.com/n6gLe68s

答案1

我的話,這是一個複雜的防火牆設定(儘管可怕許多規則的資料包計數為零,這讓我認為其中存在許多歷史問題)。我建議我們不要深入研究,試圖找出哪個現有規則錯誤地捕獲了此流量,而是直接將相關規則放在頂部:

iptables -I INPUT 1 -p tcp -i tun+ --dport 8069 -j ACCEPT
iptables -I INPUT 2 -p tcp --dport 8069 -j REJECT

編輯:我真的鼓勵您將更新編輯到您的問題中,而不是留下一系列無休止的pastebin鏈接,這些鏈接可能會也可能不會隨著時間的推移而保留。無論如何,感謝您的新輸出。正如您所看到的,第一條規則上的資料包計數為零,而第二條(一攬子拒絕)規則上的資料包計數絕對不是零。剩下的唯一結論是,您對使用 OpenVPN 連線的流量有誤;它很明顯是透過純文字互聯網傳輸的。如果你想成為完全地當然,在上面兩條規則之間加上第三條規則,

iptables -I INPUT 2 -p tcp --dport 8069 -j LOG --log-prefix "CARROT: "

除非這個詞CARROT在您的日誌檔案中出現很多,否則應該很容易在系統日誌中找到這些匹配的輸出(/var/log/messagessyslog/您的發行版認為合適的),並且它們應該確認被拒絕的資料包來自哪個介面在。我不希望它是tun0

答案2

我添加答案是因為我無法添加評論。我認為使用的協定是 udp 而不是 tcp 所以

iptables -I INPUT 1 -p udp -i tun+ --dport 8069 -j ACCEPT
iptables -I INPUT 2 -p udp --dport 8069 -j REJECT

相關內容