iT邦幫忙

0

請問 VPN 可以根據不同帳號判斷使用不同的 DNS 嗎?或許透過 iptables?(似乎無法,改架構達成目的)

大家好

最近公司有個構想是讓客戶透過 VPN 登入,限制他們只能使用指定的 DNS 上網

後來利用 AWS 透過 IPsec VPN Server on Docker 架了一台 VPN Server 實現

不過後來有個需求是希望客戶終止合作後仍然可以登入,但一律導向到某個說明頁面

初步想法是讓 VPN 可以根據不同帳號判斷使用不同的 DNS

因為 VPN 可以指定帳號的 private ip

或許可以透過 iptables 的設定讓某些 private ip 用指定的 DNS?

請問這在實務上可以做得到嗎?

謝謝

--- 更新一下後續 20170830 ---

因為 docker 又多一層,我後來用同作者的 IPsec VPN Server Auto Setup Scripts 改用 Scripts 安裝

可惜 iptables 的設定還是無法達到我的需求

看起來透過 VPN 指定的 DNS 無法根據條件再判斷

最後我的作法是在 VPN 的機器上再安裝一個 Web Filter 的程式 NxFilter 作為本機的 DNS

再透過 VPN 指定帳號的 private ip 範圍作使用者過濾

總算是有達到目的

感謝樓下參與討論的大大~

weiclin iT邦高手 7 級 ‧ 2017-08-23 19:49:13 檢舉
幫你起個頭: iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 8.8.8.8:53
daniel_sb iT邦新手 5 級 ‧ 2017-08-24 10:05:13 檢舉
感謝大大回覆,昨天也有找到類似資料,似乎 udp, tcp 都要設定,我再來試試看~
看起來沒有效果,VPN 進去後仍然是使用設定檔指定的 DNS 而不是 iptables 設定的...
我猜可能是因為 docker 有再轉過一層,這部分我就真的不懂了...
iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER_OUTPUT all -- anywhere 127.0.0.11

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- ip-xxx-xxx-0-0.xxx.compute.internal/13 anywhere policy match dir out pol none
DOCKER_POSTROUTING all -- anywhere 127.0.0.11

Chain DOCKER_OUTPUT (1 references)
target prot opt source destination
DNAT tcp -- anywhere 127.0.0.11 tcp dpt:domain to:127.0.0.11:43148
DNAT udp -- anywhere 127.0.0.11 udp dpt:domain to:127.0.0.11:36599

Chain DOCKER_POSTROUTING (1 references)
target prot opt source destination
SNAT tcp -- 127.0.0.11 anywhere tcp spt:43148 to::53
SNAT udp -- 127.0.0.11 anywhere udp spt:36599 to::53

尚未有邦友回答

立即登入回答