Iptables

為特定子網添加路由以使伺服器可通過 VPN 直接訪問?

  • March 15, 2018

我在一個隔離的網路上有一台 Linux 機器,我通過 VPN 進入。當我使用 VPN 時,VPN 伺服器為我分配了一個虛擬 IP,例如 192.168.251.x

我發現當我使用 VPN 時,我可以 RDP 到 Windows 盒子沒有問題。Ping、http、rdp 等都可以。但是,Linux 機器無法立即訪問。事實上,我必須先將 RDP 安裝到已經在該隔離網路上的機器上,然後才能通過 ssh 進入 Linux 機器。

這告訴我 Linux 機器只接受來自其本機子網上的設備的流量,並且我需要告訴它接受來自外部設備將源自的虛擬 VPN 子網的流量。

我試過這個規則:

sudo iptables -A INPUT -p tcp -s 192.168.251.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

其中 192.168.251.0/24 是虛擬 VPN 子網。但是我仍然無法從連接的主機上 ping Linux 機器。所以要麼我添加了錯誤的規則,要麼添加了錯誤的規則。任何提示/指導?

user@HOST:~> uname -a 
Linux HOST 3.0.51-0.7.9-default #1 SMP Thu Nov 29 22:12:17 UTC 2012 (f3be9d0) x86_64 x86_64 x86_64 GNU/Linux

user@HOST:~> cat /proc/version Linux 
version 3.0.51-0.7.9-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux) ) #1 SMP Thu Nov 29 22:12:17 UTC 2012 (f3be9d0)

我添加了錯誤的規則,還是缺少規則?

編輯:

我目前的iptables:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  192.168.251.0/24     anywhere            ctstate NEW,ESTABLISHED

此外,icmp 和 http/s 流量的數據包擷取顯示來自我的 VPN 客戶端的流量流向 Linux 機器,但從未有任何來自 Linux 機器的返回流量。甚至沒有回复“無效的XXX”或其他任何內容。如果我沒記錯的話,這表明流量正在下降。

編輯:

user@HOST:~> ip route sh
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev eth0  scope link
192.168.20.0/24 dev eth0  proto kernel  scope link  src 192.168.20.219

user@HOST:~> sudo iptables --list
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             192.168.251.0/24    ctstate ESTABLISHED

編輯:

我的解決方案是執行:

sudo ip route add default via 192.168.20.1

然後我可以通過 VPN 直接 ping 和 telnet 到盒子。

Linux 機器正在丟棄返回數據包,因為它沒有返回 VPN 網路的有效路由。

假設您的網關位於192.168.20.1,將其添加為 Linux 機器上的預設路由可能會解決您的問題:

ip route add default via 192.168.20.1

引用自:https://unix.stackexchange.com/questions/430260