iptables、VPNサーバー、ルーティング

iptables、VPNサーバー、ルーティング

以下を除いて、I / Oルールが許可されないようにサーバー(サーバーAと呼ばれる)ファイアウォールを設定しました。 - 着信SSH接続 - 発信SSH接続は正常に動作します!

今、私は次のことをしたいと思います。 1. "-w" openssh オプション (tun インターフェイス) を使用して、指定された IP アドレスへのオンデマンド VPN サーバー接続を確立します。 2.このVPN接続が確立されたら、発信されたすべてのトラフィックをこの新しいトンインターフェイスにルーティングします。 (この方法でwgetを実行すると、トラフィックはVPNトンネルを通過します)

ステップ1は簡単に完了できます。ところで2段階を台無しにしました。

私のファイアウォールルールは次のとおりです。

# Allow incoming / outgoing SSH
iptables -I INPUT -j ACCEPT -p tcp --dport 22 --sport 1:65000
iptables -A OUTPUT -j ACCEPT -p tcp --dport 1:65000 --sport 22

###Not working
# VPN flows
iptables -A INPUT -j ACCEPT -s 10.0.0.1
iptables -A OUTPUT -j ACCEPT -d 10.0.0.1

以下はステップ1のコマンドラインです(私のサーバーAで実行されています)。

ssh -o PermitLocalCommand=yes -o LocalCommand="ifconfig eth0 10.0.0.2 pointopoint 10.0.0.1 netmask 255.255.255.0" -o ServerAliveInterval=60 -w 1:1 [email protected] "ifconfig tun1 10.0.0.1 pointopoint 10.0.0.2 netmask 255.255.255.0"

奇跡的に動作します!

次に、新しいVPN IPをデフォルトルートに設定してみました。

ip route add default via 10.0.0.1
ip route del default via my.previous.gw

これはうまくいきません。

何が間違っているのか知っていますか?

ベストアンサー1

あなたが座っている木の枝を切り取ったかもしれません。以前のデフォルトパスを削除したため、そのパスにパスがなくなる可能性がありますgiven.ip.add

出力を確認してこれを確認できます。ip route get given.ip.add使用されなくなった場合はvia my.previous.gw問題になる可能性があります。以前のデフォルトパスを削除する前に、まず次のものを追加して変更できます。

ip route add given.ip.add via my.previous.gw

今私はこの部分を理解していないので、すべてに条件文を使用します。

LocalCommand="ifconfig eth0 10.0.0.2 pointopoint 10.0.0.1 netmask 255.255.255.0"

tun1私はこれが代わりに新しいインターフェースに適用されることを望みましたeth0

その後、これが適用されたら10.0.0.1使用したい場合どのIPがトンネルを通過し、ファイアウォールルールがそれをブロックします(デフォルトポリシーがDROPであると仮定)。 2 つの新しいトンネル IP 間のトラフィックだけでなく、VPN トンネル インターフェイスを介したすべてのトラフィックを許可するようにルールを変更することをお勧めします。

iptables -A INPUT -i tun1 -j ACCEPT
iptables -A OUTPUT -o tun1 -j ACCEPT

リモートピアは、NATが有効なルータとして設定する必要があります(例:iptablesとMASQUERADEを使用)。

おすすめ記事