web-dev-qa-db-ja.com

VPNを介したHTTP(S)トラフィックのみのルーティング

このガイド を使用してVPNトンネルとして設定されたppp0インターフェイスがあります。ここで、特定のポート(80、443)のトラフィックをppp0インターフェイス経由でルーティングする必要があります。理想的には、VPNサーバーがダウンしている場合、すべてのHTTP(S)要求が失敗するはずです。

iptablesを使用することを提案する同様の問題に対する多くの答えがあるので、私はそれが進むべき道だと思いますが、この特定のシナリオに使用する適切なコマンドを見つけることができません。

1
blade

ここでは、wwwをルーティングのサービスとして使用します。 mangleパケットを変更するには、iptableのwwwテーブルを使用します。

Sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1

宛先ポート80を持つすべてのパケットを0x1としてマークします。

iptablesを保存して再起動します。

service iptables save
service iptables restart

次に、エントリを与えるだけで、/etc/iproute2/rt_tablesに新しいIPルートテーブルを作成します。

100 wwwtable

wwwパケットのルールを記述します。

ip rule add fwmark 0x1 lookup wwwtable

新しいテーブルwwwtableにルートを追加します。他のすべてのトラフィックは、ip route showコマンドで確認できるデフォルトゲートウェイを通過します。

メインテーブルからデフォルトゲートウェイエントリを除くすべてのエントリをコピーします。

Sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table wwwtable $ROUTE; done

wwwパケットのデフォルトゲートウェイエントリをテーブルwwwtableに追加します

Sudo ip route add default dev ppp0 table wwwtable

ip route show table wwwtableを使用して、wwwtableのすべてのルートを表示します。

ポート443httpsについてすべてを繰り返します。

2
2707974