1
1

More than 3 years have passed since last update.

FreeBSDをIPv6 + IPv4(DS-Lite)なルータにしたメモ

Last updated at Posted at 2020-12-19

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くらいしか出なくてしばらく躓いたのがつらかった(やる気が出たらメモするかも)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1