VyOSでNATする時に同一セグメント内へのDNATではまった件
はじめに
- VyOSでNAT設定やろうとした時にはまった点のメモ
環境構成
- 環境概要は以下の通り
VyOSのNIC設定
- 環境概要は以下の通り
VyOSのNIC設定
NIC | IPアドレス |
---|---|
eth0 | 10.10.10.1 |
eth1 | 192.168.179.1 |
eth2 | 128.7.56.1 |
検証環境のマシン
名称 | IPアドレス | デフォルトGW |
---|---|---|
マシン① | 10.10.10.100 | 10.10.10.1 |
マシン② | 192.168.179.100 | 192.168.179.1 |
構成図
やりたいこと
-
「128.7.56.1:80」にアクセスした時、「10.10.10.100:80」に転送されるようにしたい
DNAT設定
- VyOS側にて以下設定を実施
- rule1はeth0で受付したリクエストの転送
- rule2はeth1で受付したリクエストの転送
set nat destination rule 1 destination address 128.7.56.1
set nat destination rule 1 destination port 80
set nat destination rule 1 inbound-interface eth0
set nat destination rule 1 protocol tcp
set nat destination rule 1 translation address 10.10.10.100
set nat destination rule 1 translation port 80
set nat destination rule 2 destination address 128.7.56.1
set nat destination rule 2 destination port 80
set nat destination rule 2 inbound-interface eth1
set nat destination rule 2 protocol tcp
set nat destination rule 2 translation address 10.10.10.100
set nat destination rule 2 translation port 80
DNAT設定後の疎通結果
- マシン①から「128.7.56.1:80」にアクセスしても、「10.10.10.100:80」には転送されずエラーとなる
- マシン②からの疎通は問題なし
- VyOS側にて以下設定を実施
- rule1はeth0で受付したリクエストの転送
- rule2はeth1で受付したリクエストの転送
set nat destination rule 1 destination address 128.7.56.1
set nat destination rule 1 destination port 80
set nat destination rule 1 inbound-interface eth0
set nat destination rule 1 protocol tcp
set nat destination rule 1 translation address 10.10.10.100
set nat destination rule 1 translation port 80
set nat destination rule 2 destination address 128.7.56.1
set nat destination rule 2 destination port 80
set nat destination rule 2 inbound-interface eth1
set nat destination rule 2 protocol tcp
set nat destination rule 2 translation address 10.10.10.100
set nat destination rule 2 translation port 80
DNAT設定後の疎通結果
- マシン①から「128.7.56.1:80」にアクセスしても、「10.10.10.100:80」には転送されずエラーとなる
- マシン②からの疎通は問題なし
マシン名 | 疎通結果 |
---|---|
マシン① | ○ |
マシン② | × |
マシン①の疎通結果がNGだった理由
- SNAT変換がされていないため、マシン①への戻りパケットのsource IPアドレスが「10.10.10.100」のままになっている
- source IPアドレスが「10.10.10.100」のため、マシン①はdestination IPアドレスに「10.10.10.100」を設定して自分自身に対し通信を行なおうとするが、最初のSYNパケットのdestination IPアドレスは「128.7.56.1」であるため齟齬が発生しTCPコネクションを確立できずエラーとなる
解決方法
- SNAT設定を入れて、送信元が同一セグメント内からの場合も別セグメントからアクセスが来たように見せかける
- VyOSを経由してくれればNAT変換後のIPアドレスでいい感じに通信してくれる
- translation addressは10.10.10.0とは別セグメントで使えるやつなら多分なんでもいいはず
- outbound-interfaceはsource addressのデフォルトGWとなっているNICを指定する
set nat source rule 1000 source address '10.10.10.0/24'
set nat source rule 1000 translation address 128.7.56.1
set nat source rule 1000 outbound-interface eth0
まとめ
- DNAT設定時、同一セグメント(同一アドレス含む)からもアクセスがある場合はSNAT設定も忘れずにやる
set nat source rule 1000 source address '10.10.10.0/24'
set nat source rule 1000 translation address 128.7.56.1
set nat source rule 1000 outbound-interface eth0
- DNAT設定時、同一セグメント(同一アドレス含む)からもアクセスがある場合はSNAT設定も忘れずにやる
Author And Source
この問題について(VyOSでNATする時に同一セグメント内へのDNATではまった件), 我々は、より多くの情報をここで見つけました https://qiita.com/syabuo/items/dce4525df4b635a29429著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .