このチュートリアルを使用して、ルータとしてLinuxボックスを設定しています: https://help.ubuntu.com/community/Router
そのマシンには2つのネットワークインターフェイスと1つのVPNがあります。eth0はメインのインターネットインターフェイス、eno1はイントラネット、tun0はVPNインターフェイスです。
チュートリアルのとおり、以下のスクリプトを使用して、eno1からのすべてをvpn経由でルーティングしています。
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
それはうまくいきます。しかし、今度はeno1から送信され、宛先IPが203.205.147.173であるすべてのパケットをeth0経由でルーティングします。
どのようなiptablesルールをスクリプトに追加する必要がありますか?
編集
すべてのパケットを203.205.147.173にマークするために、スクリプトを次のように変更します。
iptables-restore <<-EOF
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o eno1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
*mangle
-A PREROUTING -i "$INTIF" -d 203.205.0.0/16 -j MARK --set-mark 0x15
COMMIT
EOF
次に、テーブルXを作成します。
Sudo nano /etc/iproute2/rt_tables
、 それから加えて 1 tableX
ファイルの最後に。
次に、ルールとルートを追加します。
Sudo ip rule add fwmark 0x15 lookup tableX
Sudo ip route add default via 192.168.5.1 dev eth0 table tableX
Sudo ip route add 203.205.0.0/16 via 192.168.5.1 dev eth0 table tableX
だが traceroute 203.205.147.173
タイムアウト:
traceroute to 203.205.147.173 (203.205.147.173), 64 Hops max, 52 byte packets
(192.168.8.1) 2.384 ms 1.060 ms 1.027 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
TableXに正しいルートを追加していないと思います。 tableXを初期化する方法に関する提案はありますか?
eth0ルーターのIPは192.168.5.1で、eno1ルーターのIPは192.168.8.1であることに注意してください
Iptables自体は何もルーティングしませんが、ファイアウォールマークによるルーティングの決定に影響を与える可能性があります。 ipツールを使用して別のルーティングテーブル(ip route add <route> ... table X
など)を追加し、ファイアウォールマーク(ip rule add fwmark 0x1 lookup X
)でパケットをルーティングするルールを追加し、iptablesルール(iptables -t mangle -A PREROUTING ... -j MARK --set-mark 0x1
)でパケットをマークします。これらの手順の後、マークされたパケットはルーティングされますルーティングテーブルXを介して。LARTC(Linuxの高度なルーティングとトラフィック制御)から取得できる詳細情報。
次のような行を追加する必要があります。
-A FORWARD -i eno1 -o eth0 -d 203.205.147.173 -j ACCEPT
LOG
ルールの前に追加する必要がある場合があります。