このブログを検索

2019年10月21日月曜日

複数IPアドレス設定時のルーター越し通信におけるLinuxのルート設定

(複数ゲートウェイ時の外部からのアクセス)
(マルチインターフェース)

【現象】
複数のNICを使用していて、かつ、それぞれが別のルーターに接続され、それぞれのルートでインターネットに繋がっている場合に
デフォルトゲートウェイに繋がっているネットワークでは、外部から問題なく繋がるのに
もう一方のネットワークには、内部ネットワークからは繋がるのに、外部のインターネットから繋がらない
という問題が起きます。
※sshやRDPなど。

[構成]
server-nic1-router1-internet (ゲートウェイ1)〇 default GW1
server-nic2-router2-internet (ゲートウェイ2)×     GW2

※上記の場合、インターネットからRDPやsshはGW1を通る場合は、通信可能ですが、
GW2を通る場合は、ACKが返ってきません。



【原因】
これは、外部から来たSYNをデフォルトゲートウェイ側のネットワークにACKしてしまうことで繋がりません。

【解決策】
そこで、デフォルトゲートウェイに繋がっていないNICに着たパケットは、外部のIPアドレスでもデフォルトゲートウェイに繋がっていないNICから返答するように設定をします。
※来たところから返すということ。

vi /etc/iproute2/rt_tables
---start---
100 subroute-eth20
----end----

ip route add table subroute-eth20 192.168.20.0/24 dev eth20 scope link proto kernel
ip route add table subroute-eth20 default via 192.168.20.1 dev eth20

ip route show table subroute-eth20

ip rule add from 192.168.20.40 table subroute-eth20 prio 100

ip rule show

vi /home/shoichi/boot-route.sh
---start---
#!/bin/sh
ip route add table subroute-eth20 192.168.20.0/24 dev eth20 scope link proto kernel
ip route add table subroute-eth20 default via 192.168.20.1 dev eth20
ip rule add from 192.168.20.40 table subroute-eth20 prio 100
----end----
chown root:root /home/shoichi/boot-route.sh
chmod 774 /home/shoichi/boot-route.sh

vi /etc/systemd/system/boot-route.service
---start---
[Unit]
Description=Route Change
After=network-online.target
ConditionPathExists=/home/shoichi

[Service]
ExecStart=/home/shoichi/boot-route.sh
Restart=no
Type=simple

[Install]
WantedBy=multi-user.target
----end----
chown root:root /etc/systemd/system/boot-route.service
chmod 644 /etc/systemd/system/boot-route.service

systemctl daemon-reload
systemctl enable boot-route
systemctl status boot-route

---備考---

systemctl list-units
systemctl list-unit-files

local-fs.target 装置に直接繋がったストレージのマウントが完了した後で実行する
network-online.target ネットワークを利用可能になった後で実行する
remote-fs.target ネットワークファイルシステム(NFSなど)を利用可能になった後で実行する
nss-lookup.target DNSなどのホスト/ネットワークサービスを利用可能になった後で実行する

0 件のコメント:

コメントを投稿