Linux-Networking

子網中多個網關上的 Dante

  • July 12, 2019

我的子網中有兩個網關。192.168.1.2 - 主要 192.168.1.1 - 次要(是的,這不是錯誤)

所以我在任何地方都使用 192.168.1.2 作為預設路由

是否可以配置 danted 以便它將傳出連接轉發到輔助網關(192.168.1.1),而主系統將使用主網關?或者我應該對 iptables 進行一些調整以實現這一目標?

其他可能的解決方案是使用不同的網路堆棧做一個 lxc 容器,但我試圖在沒有太多 RAM 且沒有那種冗餘解決方案的 rpi 上實現相同的目標。

所以我想知道它是否支持開箱即用,或者我可以在沒有任何虛擬化的情況下拆分網路堆棧?(可能與其他網關創建虛擬介面,然後將該輔助介面傳遞給 danted)

謝謝

所以我在那台機器上的主要網關是 192.168.1.2。我不想通過另一個網關 192.168.1.1 重定向來自特定使用者的所有流量

創建將被重定向到另一個網關的新使用者

useradd -m proxy

添加新的路由表

echo "201     gw1" >> /etc/iproute2/rt_tables

添加 ip 規則,以便所有標記的數據包都將轉到新的路由表

ip rule add fwmark 0x1 table gw1
ip route add default via 192.168.1.1 dev eth0 table gw1

標記來自使用者代理的所有數據包(並允許我們的子網在沒有任何重定向的情況下進行通信)

iptables -A OUTPUT -t mangle -o eth0 ! -d 192.168.1.0/24 -m owner --uid-owner proxy -j MARK --set-mark 1

這樣使用者代理將使用單獨的路由表

現在所有 ip 流量都可以正常工作,但 dns 不起作用

curl -H "Host: ifconfig.me" 216.239.32.21

DNS 請求不起作用,因為它嘗試使用通過主網關路由的 127.0.0.1:53

現在也將 dns 流量重定向到同一個網關,而不是讓它觸及 127.0.0.1:53

iptables -t nat -A OUTPUT -m owner --uid-owner proxy -p udp --dport 53 -j DNAT --to 192.168.1.1:53
iptables -t nat -A OUTPUT -m owner --uid-owner proxy -p tcp --dport 53 -j DNAT --to 192.168.1.1:53

你也可以把8.8.8.8放在那裡,它會通過192.168.1.1,主要是讓它遠離本地記憶體dns伺服器

現在 dns 請求路由正常,您可以使用嗅探器檢查,但是 dig 仍然顯示來自預設網關的 dns

curl ifconfig.me

通過使 danted(或任何其他應用程序)在 dated.conf 中以代理使用者身份執行來使用該規則

#user.privileged: root
user.notprivileged: proxy
#user.libwrap: libwrap

現在您可以將 ip rule、ip route 和 iptables 行添加到 rc.local 並將您的瀏覽器指向 danted socks 伺服器。所有出站流量都將路由到 192.168.1.1 網關

引用自:https://serverfault.com/questions/974223