🌐

ProxmoxVE内でVyOSを使ってVM用のルーターを作ってみる

2024/11/10に公開

はじめまして。

今まではPVE上のコンテナやVMで遊ぶときに、雑におうちルーターのdhcpからipを付与してたけど、管理がめんどくさくなったので、ネットワークの勉強も兼ねてPVE内に簡易的なルーターを立ててみようと思いました。
なにもかもが初心者なので間違ってても許してください。

用意するもの

  • パソコン(サーバー)
  • ProxmoxVEのiso
  • VyOSのiso
  • USB

環境

  • HPE ProLiant Thin Micro TM200
  • ProxmoxVE 8.2.7
  • VyOS 1.5 rolling

構築

とりあえずなんにも考えずにProxmoxを入れる。
その後VyOSのisoをProxmox内にぶち込む。

ノード→ネットワーク からLinux Bridgeを新規作成
Linux Bridge
お名前はお好みで、設定を以上にして作成後、適応して起動

VMを新規作成

VM
さっき作ったブリッジを追加、ネットワークの設定以外はお好みで新規作成

VMを起動する

user : vyos
pass : vyos

VyOSをインストール

$ install image
適当に設定
$ reboot

再起動後ログイン

configureモードに入る。

$ configure
[edit]

インターフェースの確認

# show interfaces
 ethernet eth0 {
    hw-id mac-address
    offload {
        gro
        gso
        sg
        tso
    }
 }
 ethernet eth1 {
    hd-id mac-address
    offload {
        gro
        gso
        sg
        tso
    }
}
loopback lo {
}

DNS(192.168.1.1)の設定

# set system name-server '192.168.1.1'

eth0のip割り当て

eth0はPVEのデフォルトのブリッジなのでおうちルーターからdhcpでipを割り当てる。

# set interfaces ethernet eth0 address dhcp

インターフェースの名前決め

今回はeth0→wan eth1→vmとしておく。

# set interfaces ethernet eth0 description 'wan'
# set interfaces ethernet eth1 description 'vm'

eth1のip割り当て

eth1(デフォルトゲートウェイ)のipを割り当てる。
今回は10.0.0.0/24をVM用に割り当てるようにし、10.0.0.1/24をeth1に割り当てる。

# set interfaces ethernet eth1 address 10.0.0.1/24

dhcpサーバーの設定

  • ルーターipの設定
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 option default-router '10.0.0.1'
  • dnsの設定
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 option name-server '10.0.0.1'
  • ホストネームの設定
    今回はvm.localに設定
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 option domain-name 'vm.local'
  • サブネットidの設定
    今回は1に設定
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 subnet-id 1
  • リース期間の設定
    今回は600に設定
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 lease '600'
  • レンジ0番として割り当てるipの範囲を決める
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 range 0 start '10.0.0.2'
# set service dhcp-server shared-network-name vm subnet 10.0.0.0/24 renge 0 stop '10.0.0.254'

dnsクエリアクセス元の設定

# set service dns forwarding allow-from '10.0.0.1/24'
# set service dns forwarding listen-address '10.0.0.1/24'
# set service dns forwarding name-server '10.0.0.1/24'

ipマスカレードの設定

eth0を指定して、アドレスを全部に指定(おまかせ)

# set nat source rule 100 outbound-interface name eth0
# set nat source rule 100 source address 0.0.0.0/0
# set nat source rule 100 translation address masquerade

設定を保存してconfigureモードを離脱

# commit
# save
# exit

設定の確認

interfaces

結果
# show interfaces
 ethernet eth0 {
    address dhcp
    description wan
    hw-id mac-address
    offload {
        gro
        gso
        sg
        tso
    }
 }
 ethernet eth1 {
    address 10.0.0.1/24
description vm
    hd-id mac-address
    offload {
        gro
        gso
        sg
        tso
    }
}
loopback lo {
}

service dhcp-server

結果
#show service dhcp-server
 shared-network-name vm {
     subnet 10.0.0.0/24
         lease 600
         option {
             default-router 10.0.0.1
             domain-name vm.local
             name-server 10.0.0.1
         }
         range 0 {
             start 10.0.0.2
             stop 10.0.0.254
         }
        subnet-id 1
     }
}

新規VM(コンテナ)での設定

ネットワーク欄のブリッジ部分に今回作ったやつを、ipv4のところをdhcpにしてあげて作成
ct

自動でVyOSからipが割り振られて、外につながれば成功。

最後に

今回作成したものは、あくまで簡易的なものであり、セキュリティ的にも不十分ですのでご注意ください。
いつかこれを拡張させて遊んでみたいですね。

参考文書

https://qiita.com/ShikiSouma/items/f397cd06670a0ef1a297
https://qiita.com/iwaseyusuke/items/0ac51439f476a36fb3ff
https://docs.vyos.io/en/latest/quick-start.html
https://docs.vyos.io/en/latest/configuration/index.html

Discussion