この記事では、MikroTik CHRを使用してVMware上の仮想マシン間のルーティングを整理する問題を解決し、外部ネットワークから仮想マシンへのVPNアクセスを整理する結果を示します。
はじめに
元の問題を定義します。
- 96 GBのメモリ容量、24 CPU、22 TBのディスク容量を持つ利用可能なサーバー
- 2つの回線がサーバーに接続されています。
- 1つはVMwareの管理と管理用です。
- 2番目からは2つのVLANが来ます-1つは組織の内部ネットワークへのアクセス用で、インターネットへのアクセスは2番目から実際のアドレスです。
組織のアドレススペースを使用しないようにするには、3つの仮想マシンのリソース用にサーバー内に独自のアドレススペースを定義し、3つのマシンから他のリソースにアクセスするためにリソースを閉じる必要があります。
組織のプロキシに送られない仮想マシンからのトラフィックをブロックする必要があります。
3つの仮想マシンの各リソースは1人用に設計されており、自宅から仕事へのアクセスを提供する必要もあります。
サーバーはVMware ESXi 6を実行しており、ルーティングにはMikroTik CHR 6.42が使用されます
VMwareを構成する
既に決定したように、2つのVLANがサーバーに到達します。1つは組織のネットワークにアクセスし、組織のプロキシを介してインターネットにアクセスする仮想マシンの役割を果たします。
仮想スイッチでVMwareを使用して、個別のインターフェイスを作成します。
作成された各インターフェイスは、MikroTik CHRを使用した仮想マシンとプールからの3つの仮想マシンにバインドされます。 たとえば、識別子がStudent#8のマシンの場合、仮想インターフェイスVM Vlan 25が割り当てられます。
その結果、MikroTik CHRを使用して仮想マシンの次の設定を取得します。
ご覧のとおり 、内部ネットワークへのアクセス用のClass8-509インターフェイスと、実際のアドレス用のReal_Outsideが表示されます。
MikroTik CHRを構成する
最初に、インターフェイスのフレンドリ名を決定し、どのインターフェイスが仮想マシンのどのプールを対象としているのかを理解するためのコメントを提供します。
/interface ethernet set [ find default-name=ether1 ] comment="VLAN ID 111 Uplink to Company" name=\ Class8_509_VM set [ find default-name=ether4 ] comment="Interface VM Vlan 12 for Student #1" \ name=Int_VM_Vlan12 set [ find default-name=ether6 ] comment="Interface VM Vlan 14 for Student #3" \ name=Int_VM_Vlan14 set [ find default-name=ether7 ] comment="Interface VM Vlan 15 for Student #4" \ name=Int_VM_Vlan15 set [ find default-name=ether8 ] comment="Interface VM Vlan 16 for Student #5" \ name=Int_VM_Vlan16 set [ find default-name=ether2 ] comment="Interface Vlan 1111 Real_Outside" \ name=Real_Outside
実際のアドレスを持つインターフェースを含む、各インターフェースにIPアドレスを割り当てます。
/ip address add address=*.*.*.*/27 interface=Class8_509_VM network=*.*.*.* add address=10.0.11.1/29 interface=Int_VM_Vlan11 network=10.0.11.0 add address=10.0.12.1/29 interface=Int_VM_Vlan12 network=10.0.12.0 add address=10.0.13.1/29 interface=Int_VM_Vlan13 network=10.0.13.0 add address=*.*.*.*/27 interface=Real_Outside network=*.*.*.*
ネットワークのセットを定義します。 各マシンプールでは、Windows Server 2012が1つの仮想マシンにインストールされ、ADとDNSが構成されているため、ネットワークごとに、この仮想マシンのIPアドレスがDNSとして機能します。
/ip dhcp-server network add address=10.0.11.0/29 dns-server=10.0.11.4 gateway=10.0.11.1 add address=10.0.12.0/29 dns-server=10.0.12.5 gateway=10.0.12.1 add address=10.0.13.0/29 dns-server=10.0.13.5 gateway=10.0.13.1
インターフェイスごとに、DHCPサーバーが発行するアドレスプールを定義し、 リース用のARPの追加をアクティブにします。 したがって、仮想マシンのIPアドレスの手動割り当てを防止します。
リース用ARPの追加-MACを作成します-DHCPからリースしたクライアントのARPレコードのテーブルにIPマッピングがあり、IP / ARPとともに、microticsのMACフィルタリングを整理できます。
インターネットから仮想マシンへのアクセスを提供する必要があるため、クライアントがL2TP / IPsecを介して接続される場合、クライアントのアドレスのプールをすぐに準備します。
/ip pool add name=dhcp_pool_for_vm_vlan11 ranges=10.0.11.2-10.0.11.6 add name=dhcp_pool_for_vm_vlan12 ranges=10.0.12.2-10.0.12.6 add name=dhcp_pool_for_vm_vlan13 ranges=10.0.13.2-10.0.13.6 # l2tp add name=student1_l2tp_pool ranges=10.1.12.2-10.1.12.4 add name=student2_l2tp_pool ranges=10.1.13.2-10.1.13.4 add name=student3_l2tp_pool ranges=10.1.14.2-10.1.14.4 /ip dhcp-server add add-arp=yes address-pool=dhcp_pool_for_vm_vlan11 disabled=no interface=\ Int_VM_Vlan11 lease-time=1h name=dhcp_for_vm_vlan11 add add-arp=yes address-pool=dhcp_pool_for_vm_vlan12 disabled=no interface=\ Int_VM_Vlan12 lease-time=1h name=dhcp_for_vm_vlan12 add add-arp=yes address-pool=dhcp_pool_for_vm_vlan13 disabled=no interface=\ Int_VM_Vlan13 lease-time=1h name=dhcp_for_vm_vlan13
RouterOSの新しいバージョンにはリストを作成する機能があるため、すべてのローカルインターフェイスを1つのリストに結合して、ファイアウォール設定を容易にします。
/interface list member add interface=Int_VM_Vlan11 list=local_vm add interface=Int_VM_Vlan12 list=local_vm add interface=Int_VM_Vlan13 list=local_vm
プロキシIPアドレスのリストを定義し、ファイアウォールルールで、すべてのローカルインターフェイスからのトラフィックがプロキシアドレスに送られない場合にブロックされるように指定します。 ICMPを拒否し、ローカルインターフェイス間のトラフィックをブロックするルールをすぐに指摘します。
/ip firewall address-list add address=192.168.3.3 list=Proxy add address=192.168.3.1 list=Proxy add address=192.168.3.5 list=Proxy add address=192.168.3.7 list=Proxy /ip firewall filter add action=drop chain=forward comment="Block If Not Proxy Address" \ dst-address-list=!Proxy in-interface-list=local_vm add action=drop chain=input comment="Block ping" \ in-interface-list=local_vm protocol=icmp add action=drop chain=forward comment="Block ping between interface" \ in-interface-list=local_vm out-interface-list=local_vm
また、ローカルアドレスからのすべてのトラフィックが組織のネットワークを監視するインターフェイスを通過するNATを定義します。
MikroTik CHRの構成:L2TP / IPsec
外部ネットワークからのアクセスを整理するには、L2TPサーバーをアクティブにし、ユーザーごとに資格情報と独自のインターフェイスを作成します。 各ユーザーは、一度に1つの接続のみを作成できます。 一部のユーザーはWindows 10を使用しているため、セキュリティ設定で3DES暗号化アルゴリズムを追加でアクティブ化します。
ファイアウォール設定では、各ユーザーが特定のポート(RPDおよびSSH)を介して(特定のローカルインターフェイスへの)自分のネットワークにのみアクセスし、他のトラフィックをブロックできることを示しています。 さらに、実際のアドレスを持つインターフェイスからのl2tpへのアクセスを許可します。
組織のネットワークの負荷を軽減するために、ユーザーごとに速度制限を設けます。
その結果、次の設定を取得し、1人のユーザーの設定の一部を提供します。
/interface l2tp-server add comment="Interface L2TP for Student#1" name=int_l2tp_student1 user=student1 /ppp profile add change-tcp-mss=yes comment="Student1 Profile for L2TP, Rate Limits 3M/3M" \ local-address=10.1.12.1 name=student1_l2tp_profile only-one=yes rate-limit=\ 3M/3M remote-address=student1_l2tp_pool use-compression=yes use-encryption=\ required use-upnp=no /ip firewall filter add action=accept chain=input in-interface=Real_Outside port=1701,500,5000 \ protocol=udp add action=accept chain=input in-interface=Real_Outside protocol=ipsec-esp # l2tp add action=accept chain=forward comment="Student #1 L2TP to Vlan 12" \ in-interface=int_l2tp_student1 out-interface=Int_VM_Vlan12 port=3389,22 \ protocol=tcp add action=accept chain=forward in-interface=Int_VM_Vlan12 out-interface=\ int_l2tp_student1 add action=drop chain=forward in-interface=int_l2tp_student1 /ppp secret add comment="Student1 Auth Data" name=student1 password=******** profile= student1_l2tp_profile service=l2tp
クライアントのホームマシンで接続を構成することに加えて、クライアントはさらに許可されたネットワークへのルートを規定しますが、ファイアウォールルールのおかげで、クライアントが自分のネットワークではないルートを指定した場合、指定されたネットワークの仮想マシンにアクセスできません
トラフィックマーキング
2つのインターネット接続があるため、目的のインターフェイスを介して着信トラフィックを正しく送り返す必要があります。 したがって、トラフィックのマーキングにMikrotikの機能を使用します。
/ip firewall mangle add action=mark-connection chain=input comment="Mangle Real_Outside traffic" \ in-interface=Real_Outside new-connection-mark=realOutMark passthrough=yes add action=mark-connection chain=input comment="Mangle Class8_509_VM Traffic" \ in-interface=Class8_509_VM new-connection-mark=classVmMark passthrough=yes add action=mark-routing chain=output comment="Rout out Real_Outside" \ connection-mark=realOutMark new-routing-mark=routReakOut passthrough=no add action=mark-routing chain=output comment="Rout out Class8-509 VM" \ connection-mark=classVmMark new-routing-mark=routClass8-509VM passthrough=\ no /ip route add distance=1 gateway=195.69.204.161 routing-mark=routReakOut add distance=1 gateway=192.168.145.30 routing-mark=routClass8-509VM add check-gateway=ping distance=1 gateway=Class8_509_VM
SSHブロックリスト
MikroTikには実際のアドレスがあるため、SSHプロトコルを使用してインターネットからパスワードを選択する試みがあります。そのため、ファイアウォールにいくつかのルールを追加して、そのようなIPアドレスをブロックします。
add action=drop chain=input comment="drop ssh brute forcers" dst-port=22 \ protocol=tcp src-address-list=ssh_blacklist add action=add-src-to-address-list address-list=ssh_blacklist \ address-list-timeout=14w2d chain=input connection-state=new dst-port=22 \ protocol=tcp add action=add-src-to-address-list address-list=ssh_stage3 \ address-list-timeout=10m chain=input connection-state=new dst-port=22 \ protocol=tcp add action=add-src-to-address-list address-list=ssh_stage2 \ address-list-timeout=10m chain=input connection-state=new dst-port=22 \ protocol=tcp add action=add-src-to-address-list address-list=ssh_stage1 \ address-list-timeout=10m chain=input connection-state=new dst-port=22 \ protocol=tcp add action=drop chain=forward comment="drop ssh brute downstream" dst-port=22 \ protocol=tcp
この記事の執筆時点では、ロックリストには約400のアドレスがありました。
合計
その結果、出力で設定された仮想mikrotikを取得します。これは、トラフィックルーティングを実行し、l2tp / ipsecを介してインターネットから接続する機能を提供し、ユーザーとインターフェイスを区別するファイアウォール設定を備えています。
UPD
gecubeに感謝します 。 MikroTik CHRの場合、ライセンスを購入する必要があります。そうしないと、各インターフェイスが1 Mbpsに制限されるか、フル機能で60日間トライアルをアクティブ化できます。 ライセンスのコストとグラデーション。 。 無制限のライセンスは、インターフェースの速度によってのみ制限されます。