OPEN VPNを介してポート22のSSHを除くすべてをパブリックIP経由でルーティングします。

OPEN VPNを介してポート22のSSHを除くすべてをパブリックIP経由でルーティングします。

パブリックVPN接続を介してVPS [Ubuntu] SSHサービスをルーティングできますが、他のすべてのデータはパブリックアドレスを介してシャットダウンすることを許可できますか?これを達成するには、どのようなiptables魔法が必要ですか?

SSHデータ→OPEN VPN経由その他すべてのデータ→公開

VPNに接続する前のifconfigの詳細は次のとおりです。

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:18x.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:73928 errors:0 dropped:1 overruns:0 frame:0
          TX packets:723 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4508581 (4.5 MB)  TX bytes:95511 (95.5 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2520 (2.5 KB)  TX bytes:2520 (2.5 KB)

VPN接続後

eth0      Link encap:Ethernet  HWaddr 52:54:00:32:2a:e6
          inet addr:185.144.31.77  Bcast:185.144.31.255  Mask:255.255.254.0
          inet6 addr: 2a03:a0e0:bad:bad::574/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::573/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::572/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::571/128 Scope:Global
          inet6 addr: 2a03:a0e0:bad:bad::570/64 Scope:Global
          inet6 addr: fe80::5054:ff:fe32:2ae6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:282634 (282.6 KB)  TX bytes:60862 (60.8 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.2.62  P-t-P:10.8.2.61  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:7025 (7.0 KB)  TX bytes:16197 (16.1 KB)

答え1

iptablesの代替案:ネットワークネームスペースを使用してください。ルートとして、次のことを行います。

ip addr show dev tun0
ip netns add vpnssh
ip link set tun0 netns vpnssh
ip netns exec vpnssh su -c 'xterm &' user_name

tun0OpenVPNエンドポイントのネットワークインターフェースとuser_nameそれを実行しているユーザーはどこにありますかssh? inet(と呼ばれるvpn_local_ip)とピア(vpn_peer_ip)のアドレスを書き留めますtun0

現在、すべての子プロセスでのみ「表示」されるxtermがありますが、tun0(validationを使用してip link)残念ながらそれを移動すると削除されます。sudoしたがって、このウィンドウでは

ip link set tun0 up
ip addr add vpn_local_ip peer vpn_peer_ip dev tun0
ip route del default
ip route add default via vpn_local_ip dev tun0

これでsshこのウィンドウを実行でき、OpenVPN接続を使用します。必要に応じてすべてをスクリプトします(ip netns exec vpnssh ...パート2)。

関連情報