FreeBSDをIPv6(IPoE) + IPv4(DS-Lite)対応ルータ化したメモ
環境
FreeBSDのバージョン: 12.2-RELEASE
WAN側インターフェイス: re0
LAN側インターフェイス: ue0
使ったもの
- rtadvd
- クライアントにIPv6アドレスを通知するため(ルータ広告)
- dhcpd
- クライアントにIPv4プライベートアドレスを通知するため(DHCPサーバー)
- ndproxy
- NDPパケットのプロキシ用
- ifconfig
- DS-Lite設定など
rc.confの設定
#/etc/rc.conf
#================================================
# IPv6関係の設定
#================================================
# IPv6のゲートウェイ化(フォワーディングが有効化される)
ipv6_gateway_enable="YES"
# すべてのインターフェイスを有効化
ipv6_activate_all_interfaces="YES"
# WAN側インターフェイスへのRA(IP自動設定)を受け取るようにする
# また、promiscモードを有効化する(確かndproxyが要求してた)
ifconfig_re0_ipv6="inet6 accept_rtadv promisc"
# LAN側インターフェイスはRAを受け付ける設定にしていても
# グローバルアドレスがついてくれないので手動でつける
ifconfig_ue0_ipv6="inet6 {IPv6プレフィックスアドレス}::1 prefixlen 64 -accept_rtadv"
# rtadvd(クライアントにRAを送るやつ)を有効化
rtadvd_enable="YES"
# rtadvdの対象をLAN側インターフェイスに設定
rtadvd_interfaces="ue0"
# rtsold(Router Soliticationメッセージを送信するやつ)
rtsold_enable="YES"
# IPv6のルートを設定
# ゲートウェイアドレスは`route -6 show default`で表示できるが、
# ipv6_gateway_enable="YES"となっているときは表示されないので、
# 無効化されているときに確認しておく
ipv6_defaultrouter="{ゲートウェイアドレス}%re0"
# ndproxyを有効化
ndproxy_enable="YES"
# WAN側インターフェイス
ndproxy_uplink_interface="re0"
# WAN側インターフェイスのMACアドレス
ndproxy_downlink_mac_address="{WAN側インターフェイスのMACアドレス}"
ndproxy_uplink_ipv6_addresses="{ゲートウェイアドレス}"
#================================================
# IPv4関係の設定
#================================================
# WAN側のIPv4を無効化
ifconfig_re0=""
# LAN側のIPv4アドレスの範囲を設定
ifconfig_ue0="inet 192.168.0.1 netmask 255.255.255.0"
# トンネル設定
cloned_interfaces="gif0"
ifconfig_gif0_ipv6="inet6 tunnel {WAN側グローバルIPv6アドレス} {AFTRのアドレス} prefixlen 128 mtu 1500"
defaultrouter="-iface gif0"
# ゲートウェイモードを有効化(フォワーディングなど)
gateway_enable="YES"
# DHCPDを有効化
dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
# DHCPの対象インターフェイスを設定
dhcpd_ifaces="ue0"
rtadvdの設定
ue0に接続された機器に対してルータ広告するやつ DNSサーバーも渡そうと思えば渡せる
#/etc/rtadvd.conf
ue0:\
:addr="{IPv6プレフィックスアドレス}":prefixlen#64:
dhcpdの設定
ローカルIPv4アドレスの設定用
#/usr/local/etc/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.100;
option routers 192.168.0.1;
option domain-name-servers {プライマリDNSサーバー}, {セカンダリDNSサーバー};
}
pfの設定
# /etc/pf.conf
block in log all flags any
acceptable_protos="{" icmp6 icmp igmp "}"
pass in proto $acceptable_protos all flags any
# ゲートウェイからのアクセスを受け付けるため
pass in from fe80::/64 to any flags any
# ローカルからのパケットを受け付ける
pass in on $lan_if all flags any
# 出ていくやつは全部許可する
pass out all flags any
これで設定終わり
感想とか
使ってた1Gbps対応USB-LAN変換器が90Mbpsくらいしか出なくてしばらく躓いたのがつらかった(やる気が出たらメモするかも)