以下を除いて、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を使用)。