Juniper SRX Seriesでmulti homingする
Ciscoでsource address routingを使って出口を分けたことしかなく、やったら割と面倒だったのでメモ。
ほぼwebguiで設定不可です。
DHCP Serverとしても機能させる場合、JUNOS Software Release 12.1X47以降推奨。
目標
- インターネット回線が二つあり、SRX 210 HE2 1台で両方とも受け取る。接続はDHCP。PPPoEでもpp0とpp1に読み替えれば問題ないはずです。
- メインの回線とゲスト用回線の二つに分割する。VLAN切って置いてWifiのアクセスポイントに渡す。
設定
普通に設定できるところは設定項目のみ記載。
vlan
vlan | vlan name | description |
---|---|---|
vlan.1 | internal | 内部通信用 |
vlan.2 | wifi | wifi用 |
vlan.3 | Guest | guest wifi用 |
インターフェース
interface | vlan | description |
---|---|---|
ge-0/0/0 | no vlan dhcp-client | インターネット回線1 |
ge-0/0/1 | native-vlan internal, trunk vlan [wifi Guest] | 無線AP用 |
fe-0/0/2 | no vlan dhcp-client | インターネット回線2 |
fe-0/0/3-7 | access vlan internal | 内部通信用 |
Zone
|Zone|interface|
|---|---|---|
|internal|vlan.1 vlan.2|
|internet|ge-0/0/0|
|Guest|vlan.3|
|Guest Internet|fe-0/0/2|
Security Policyは適当に。ルーティングをどうにかしてあげないとポリシーをどうしようがinternalとguestは繋がりません。
他、internal -> internetとguest -> Guest internetにSource NATしてインターネットに出れるようにしてあげます。
Virtual Router
当初はsource natのみで出口が変えられると思ってたけど全然ダメだったのでVirtual Router機能を使ってどうにかします。
Virtual Routerを使うと複数のルーティングテーブルが作成でき、それに対してインタフェースを割り当てられるので今回の目的に最適。社内とゲストで相互で通信できないほうがよいので。
ゲスト用の回線として使うfe-0/0/2とvlan3を所属させておきます。
今回はdhcpで回線情報を受け取るので必要ないですが、設定がいる場合にはrouting-instances内のrouting-optionsでstatic routeを設定します。
routing-instances {
guest {
instance-type virtual-router;
interface fe-0/0/2.0;
interface vlan.3;
}
}
DHCP
これで大体動くんですが、DHCP Serverとして動かしてると、routing-instanceで隔離したところだけDHCPが配れません。
DHCPのパケットだけinet.0を通るように設定してあげる方法もありましたが、とてもわかりにくいので、12.1X47以降に搭載されているJDHCPを使う方法にします。
旧DHCP Serverの設定と混じるとエラーとなる糞仕様なのでデフォルトのdhcp設定は全て削除する必要があります。つまりwebguiからdhcpを設定してると駄目です。
DHCP serverは今回のようにVirtual Routerで分割している場合は、routing-instance内で作ってあげる必要があります。
system {
service {
dhcp-local-server {
group dhcp-group {
interface vlan.1;
interface vlan.2;
}
}
}
}
access {
address-assignment {
pool wifi {
family inet {
network x.x.x.x/20;
range wifi-range {
low x.x.x.x;
high x.x.x.x;
}
dhcp-attributes {
name-server {
x.x.x.x;
}
router {
x.x.x.x;
}
propagate-settings vlan.2;
}
}
}
pool internal {
family inet {
network x.x.x.x/20;
range internal-range {
low x.x.x.x;
high x.x.x.x;
}
dhcp-attributes {
name-server {
x.x.x.x;
}
router {
x.x.x.x;
}
propagate-settings vlan.1;
}
}
}
}
}
routing-instances {
system {
services {
dhcp-local-server {
group guest {
interface vlan.3;
}
}
}
}
access {
address-assignment {
pool guest {
family inet {
network x.x.x.x/24;
range guest-range {
low x.x.x.x;
high x.x.x.x;
}
dhcp-attributes {
name-server {
x.x.x.x;
}
router {
x.x.x.x;
}
propagate-settings vlan.3;
}
}
}
}
}
}
}
DHCP clientでDHCPを受け取る側も同様でデフォルトのものは使えません。
interfaces {
ge-0/0/0 {
gigether-options {
auto-negotiation;
}
unit 0 {
family inet {
dhcp-client {
update-server;
}
}
}
}
fe-0/0/2 {
fastether-options {
auto-negotiation;
}
unit 0 {
family inet {
dhcp-client {
update-server;
}
}
}
}
}
これでゲスト側でもDHCPが渡せます。