最新のカーネル(> = 4.17)を使用して、特定のインターフェイスを介してすべてのHTTP / HTTPSトラフィックをルーティングします。

最新のカーネル(> = 4.17)を使用して、特定のインターフェイスを介してすべてのHTTP / HTTPSトラフィックをルーティングします。

私の問題は次のようによく似ています。宛先ポートに応じてさまざまなインターフェイスにトラフィックを出力。しかし、この問題は2011年に提起されました。これで最新のカーネルがあるので、tcpまたはudpセレクタを使用してIPルールを作成できます(「ポリシールーティングはレイヤ4にあります」):ソース -この回答に対するコメントを見る

私はルーティングに初めて触れたので、unix.stackexchange.comの答えで読んだものだけを知っています。私の解決策のアイデアのほとんどは次のようになりました。特定のインターフェイスを介したポートトラフィックのルーティング

eth1(10.0.0.182)とeth0(192.168.1.2)の2つのインターフェースがあります。私のデフォルトパスはeth0です。すべてのhttpトラフィックとhttpsトラフィックがデフォルトルートではなくeth1を介してルーティングされるようにしたいです。他のすべては同じままです。

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    203    0        0 eth1
10.0.0.0        0.0.0.0         255.255.255.0   U     203    0        0 eth1
192.168.1.2     0.0.0.0         255.255.255.0   U     202    0        0 eth0

10.0.0.1のデバイスは、DHCPサーバー、ファイアウォールなどの役割を果たすComcastモデムです。パブリックIPアドレスはComcast IPです。

最新のIPルール機能を使用して正常に機能するには、次の手順を実行する必要があります。

# add a new (secondary) table:
echo "200 comcast-route" >> /etc/iproute2/rt_tables

# Populate secondary routing table
ip route add default via 10.0.0.1 dev eth1 table comcast-route

# relax Strict Reverse Path Forwarding to Loose RPF 
sysctl -w net.ipv4.conf.eth1.rp_filter=2
#NOTE: my system already has this value, so no change is needed
# net.ipv4.conf.eth1.rp_filter = 2

# specify alternate routes when using specific destination ports
# iif lo below means "from local"
ip rule add iif lo ipproto tcp dport 80 lookup 80
ip rule add iif lo ipproto tcp dport 443 lookup 80

これはすべて正しいと思いますか?うまくいかないと、これらの変更をどのように元に戻すことができますか?

最後に、すべてが期待どおりに機能する場合、どのようにこれを持続させることができますか?答えが見えますここが、使われたアドバイスは /etc/rc.d/rc.local昔ながらだと思います。これらの規則に従うより良い方法はありますか?

ベストアンサー1

おすすめ記事