VyOSでPPPoEに接続してポート開放メモ

# はじめに
IPoE方式のインターネット接続にしたらグローバルIPアドレスがもらえなくなったのでPPPoEで接続するルーターを作ろうと思ってこの記事を書きました。PPPoEだとグローバルIPアドレスがもらえるらしい。

# 構成
```
インターネット ---- eth0(PPPoE):VyOS:eth1 ----- 自宅ネットワーク(192.168.1.0/24)
```

VyOSはHyper-V上に作ります。
DHCPサーバやDNSサーバは別で動かしているのでここでは構成しません。

# Hyper-Vで仮想マシンを作成
仮想マシンを普通につくる(省略)
UEFI(第二世代)だとなぜかうまくブートしないのでBIOS(第一世代)で作るとよく動く。

仮想マシンを普通に作るとネットワークアダプターが1つしか追加されないので仮想マシンの設定からもう1つ追加しておきます。
インターネット(PPPoE用)と自宅ネットワークに接続する2つです。

# PPPoEの設定
## 接続
まずは設定モードに切り替え

```
$ configure
```
そして、PPPoEの設定を以下のようにします。

```
# set interfaces ethernet eth0 pppoe 0
# set interfaces ethernet eth0 pppoe 0 user-id [ユーザー名]
# set interfaces ethernet eth0 pppoe 0 password [パスワード]
# set interfaces ethernet eth0 pppoe 0 default-route auto
# set interfaces ethernet eth0 pppoe 0 name-server auto
# commit
# save
# exit
```
[ユーザー名]と[パスワード]のところはプロバイダから発行されたものを入力します。

## 確認
```
$ show interfaces pppoe
```
と入力して

```
RX:  bytes    packets     errors    dropped    overrun      mcast
       1199670       3050          0          0          0          0    
TX:  bytes    packets     errors    dropped    carrier collisions
        643157       3331          0          0          0          0
```
こんな感じのが出れば多分設定完了・・・のはず。

# NATの設定
## 自宅ネットワーク -> インターネット
自宅ネットワークの端末(192.168.1.0/24)がVyOSを経由してインターネットに接続するための設定。
configureコマンドで設定画面に入り、

```
# set nat source rule 10 translation address masquerade
# set nat source rule 10 source address 192.168.1.0/24
# set nat source rule 10 outbound-interface pppoe0
# commit
# save
```
自宅ネットワーク -> インターネットへのNATがされるようになったので、VyOS経由でWebページを見たりすることができます。ruleのあとの数字は大きいほど優先度が高い気がします。(要検証)

## インターネット -> 自宅ネットワーク（ポート開放）
ポート開放をしてサーバなどをインターネットに公開する場合のNAT設定。
インターネット側からTCP 25565番へのアクセスがあった場合、192.168.1.9:25565にポートフォワードする設定をします。

```
# set nat destination rule 1 destination port 25565
# set nat destination rule 1 protocol tcp
# set nat destination rule 1 translation address 192.168.1.9
# set nat destination rule 1 translation port 25565
# set nat destination rule 1 inbound-interface pppoe0
# commit
# save
```

#ファイアウォールの設定
このままだとセキュリティ的によろしくないのでファイアウォールを設定します。
## VyOSルーターに対するファイアウォール
インターネット側からVyOSに対するファイアウォールを設定します。
VyOSから接続されるコネクションに対しては許可をしますが、インターネット側からのコネクションについては許可しない設定にします。

```
# set firewall name OUTSIDE_LOCAL default-action drop
# set firewall name OUTSIDE_LOCAL rule 10 action accept
# set firewall name OUTSIDE_LOCAL rule 10 state established enable
# set firewall name OUTSIDE_LOCAL rule 10 state related enable
# set interfaces ethernet pppoe0 firewall local name OUTSIDE_LOCAL
# commit
# save
```

##インターネット側からVyOSルーターを経由する接続に対するファイアウォール
VyOSを経由して、インターネット側からの公開されているサーバへの接続を許可する設定です。
ポート開放でTCP 25565をポートフォワードする設定にしたので、TCP 25565を許可する設定をします。

```
# set firewall name OUTSIDE_IN default-action drop
# set firewall name OUTSIDE_IN rule 10 action accept
# set firewall name OUTSIDE_IN rule 10 state established enable
# set firewall name OUTSIDE_IN rule 10 state related enable
# set firewall name OUTSIDE_IN rule 20 action accept
# set firewall name OUTSIDE_IN rule 20 protocol tcp
# set firewall name OUTSIDE_IN rule 20 destination port 25565
# set interfaces ethernet pppoe0 firewall in name OUTSIDE_IN
# commit
# save
```

#まとめ
IPoE接続でインターネットの速度を速くするのと引き換えにグローバルIPアドレスを失ったが、VyOSでソフトウェアルーターを作ればグローバルIPアドレスを取得してサーバを公開できますね。PPPoEなので速度はお察しですけど。

#参考
[Vyattaでフレッツ光ネクストにPPPoE接続する](https://qiita.com/mnb/items/8fa00bbd4ef7c20d713a)
[VyOS の基本設定 (DHCP/DNS/NAT/Firewall/その他)](https://www.qoosky.io/techs/3ba8da03c0)