パブリック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
tun0
OpenVPNエンドポイントのネットワークインターフェースと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)。