From owner-freebsd-users-jp@freebsd.org Fri Mar 12 14:29:50 2021 Return-Path: Delivered-To: freebsd-users-jp@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CA914579FB4 for ; Fri, 12 Mar 2021 14:29:50 +0000 (UTC) (envelope-from 3226388001@jcom.home.ne.jp) Received: from mgw1.mx.zaq.ne.jp (rly00002-jc.im.kddi.ne.jp [175.135.252.10]) by mx1.freebsd.org (Postfix) with ESMTP id 4Dxp9m50pMz3tYk for ; Fri, 12 Mar 2021 14:29:47 +0000 (UTC) (envelope-from 3226388001@jcom.home.ne.jp) Received: from freebsd.domain.local by omta0009-jc.im.kddi.ne.jp with ESMTP id <20210312142939819.HNCH.10778.freebsd.domain.local@omta0009.jcom.zaq.ne.jp> for ; Fri, 12 Mar 2021 23:29:39 +0900 Received: from [192.168.3.3] (vpnwinnt.domain.local [192.168.3.3]) by freebsd.domain.local (8.16.1/8.13.6) with ESMTP id 12CETcC6087205; Fri, 12 Mar 2021 23:29:39 +0900 (JST) (envelope-from 3226388001@jcom.home.ne.jp) Date: Fri, 12 Mar 2021 23:29:39 +0900 (JST) Message-Id: <202103121429.12CETcC6087205@freebsd.domain.local> From: 3226388001 <3226388001@jcom.home.ne.jp> To: freebsd-users-jp In-Reply-To: References: <20210305.235106.1002415398090318509.take@kasaneiro.jp> MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.74.03 [ja] X-Rspamd-Queue-Id: 4Dxp9m50pMz3tYk X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of 3226388001@jcom.home.ne.jp designates 175.135.252.10 as permitted sender) smtp.mailfrom=3226388001@jcom.home.ne.jp X-Spamd-Result: default: False [-2.97 / 15.00]; ARC_NA(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[175.135.252.10:from]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:175.135.252.8/29]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-users-jp@freebsd.org]; DMARC_NA(0.00)[home.ne.jp]; RCPT_COUNT_ONE(0.00)[1]; SPAMHAUS_ZRD(0.00)[175.135.252.10:from:127.0.2.255]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.77)[-0.771]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:2516, ipnet:175.135.0.0/16, country:JP]; MAILMAN_DEST(0.00)[freebsd-users-jp] Subject: [FreeBSD-users-jp 96716] Re: =?iso-2022-jp?b?GyRCIVYbKEJ2NhskQiVXJWklORsoQiAbJEI4R0RqGyhC?= =?iso-2022-jp?b?SVAbJEIlNSE8JVMlOSFXJEckThsoQklQSVAbJEIlSCVzJU0layROGyhC?= =?iso-2022-jp?b?GyRCQF9EaiROO0VKfRsoQg==?= X-BeenThere: freebsd-users-jp@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussion relevant to FreeBSD communities in Japan List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Mar 2021 14:29:50 -0000 通りすがりの者です。 普段は殆どこのメールングリストは読んでいないのですが、 偶然本件を見かけまして・・ 本題(「v6プラス 固定IPサービス」)では無かったようですが、 「v6プラス」の方のこちら: > (3) MAP-E方式に対応するよう、FreeBSD の NAT 周りに手を入れる 数年前に個人的に手を入れて使用している物がありますので、 もしかしたら応用できる方がいらっしゃるかもしれないと思い、 ご参考までに情報を貼らせて頂きます。 ※個人的用途なので汎用化はしておらず、  ・割当てアドレスに応じたパラメータを設定とパッチ内に埋め込む必要があり、   この辺り(例)を参考に値を求める必要があります:    https://gato.intaa.net/archives/13173    http://ipv4.web.fc2.com/map-e.html  ・ipfw natを使用していますが、その中の"same_ports"スイッチを   MAP-E動作への切替スイッチに転用しています。 ※数年間実用していたものがベースですが、  今回投稿用に設定の抽象化とパッチの仕立て直しをしているので、  誤りがあったりしたらごめんなさい。 ** /etc/rc.conf ** ifconfig__ipv6="inet6 accept_rtadv" ifconfig__alias0="inet6 prefixlen 64" ifconfig_gif0="inet6 tunnel prefixlen 64 mtu 1460 up" ifconfig_gif0_alias0="inet netmask 255.255.255.255" ** ipfwルール ** kldload ipfw_nat kldload ipfw_pmod sysctl net.inet.ip.fw.one_pass=0 MAP_E_MYIP= ipfw nat 100 config ip ${MAP_E_MYIP} same_ports deny_in 00100 allow ip from any to any via lo0 : skipto 20000 ip6 from any to any via : reass ip from any to any in allow icmp from any to any in icmptypes 8 allow icmp from any to any out icmptypes 0 skipto 10000 ip from any to any via gif0 : 10000 check-state :gif_nat tcp-setmss 14xx tcp from any to any tcpflags syn : 15000 nat 100 ip from any to any keep-state :gif_nat allow ip from any to any 20000 check-state :ip6_flow : allow ipencap from to out allow ipencap from to in : deny ip from any to any ** デフォルトルート設定 ** route delete 0.0.0.0 route add 0.0.0.0 -interface gif0 以下、パッチ(releng/12.2)-> Index: sys/netinet/libalias/alias_db.c =================================================================== --- sys/netinet/libalias/alias_db.c (revision 369447) +++ sys/netinet/libalias/alias_db.c (working copy) @@ -570,6 +570,14 @@ another link concurrently. This is because GetNewPort() looks for unused triplets: (dest addr, dest port, alias port). */ +#define MAPE_IPV6_PREFIX (0x240bxxxxxxxxxxxxL) ※IPv6 プレフィックス/64 +#define MAPE_PSID ((int)((MAPE_IPV6_PREFIX >> 8) & 0xff)) +static int convertToMapE( int v ){ + v = (v % 0xf0) + 0x10; + v = ((v & 0xf0) << 8) | (MAPE_PSID<<4) | (v & 0x0f); + return v; +} + static int GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param) { @@ -577,6 +585,7 @@ int max_trials; u_short port_sys; u_short port_net; + int mape_flag = 0; LIBALIAS_LOCK_ASSERT(la); /* @@ -603,8 +612,10 @@ * this is already in use, the remainder of the * trials will be random. */ + mape_flag = 1; port_net = lnk->src_port; port_sys = ntohs(port_net); + max_trials = 240 + GET_NEW_PORT_MAX_ATTEMPTS; } else { /* First trial and all subsequent are random. */ port_sys = arc4random() & ALIAS_PORT_MASK; @@ -628,6 +639,10 @@ int go_ahead; struct alias_link *search_result; + if ( mape_flag ){ + port_net = htons(convertToMapE(port_sys)); + } + search_result = FindLinkIn(la, lnk->dst_addr, lnk->alias_addr, lnk->dst_port, port_net, lnk->link_type, 0); @@ -637,6 +652,16 @@ else if (!(lnk->flags & LINK_PARTIALLY_SPECIFIED) && (search_result->flags & LINK_PARTIALLY_SPECIFIED)) go_ahead = 1; + else if ( mape_flag && search_result->link_type == LINK_TCP + && search_result->data.tcp->state.out != ALIAS_TCP_STATE_CONNECTED + && search_result->data.tcp->state.in != ALIAS_TCP_STATE_CONNECTED + && search_result->expire_time == TCP_EXPIRE_DEAD + && i >= GET_NEW_PORT_MAX_ATTEMPTS + ){ + DeleteLink(search_result); + search_result = NULL; + go_ahead = 1; + } else go_ahead = 0; @@ -658,9 +683,14 @@ } #endif } - port_sys = arc4random() & ALIAS_PORT_MASK; - port_sys += ALIAS_PORT_BASE; - port_net = htons(port_sys); + if ( mape_flag && i >= GET_NEW_PORT_MAX_ATTEMPTS ){ + port_sys++; + } + else{ + port_sys = arc4random() & ALIAS_PORT_MASK; + port_sys += ALIAS_PORT_BASE; + port_net = htons(port_sys); + } } #ifdef LIBALIAS_DEBUG Index: sys/netinet6/in6_gif.c =================================================================== --- sys/netinet6/in6_gif.c (revision 369447) +++ sys/netinet6/in6_gif.c (working copy) @@ -324,7 +324,7 @@ * it is too painful to ask for resend of inner packet, to achieve * path MTU discovery for encapsulated packets. */ - return (ip6_output(m, 0, NULL, IPV6_MINMTU, 0, NULL, NULL)); + return (ip6_output(m, 0, NULL, 0/*IPV6_MINMTU*/, 0, NULL, NULL)); } static int <-パッチここまで On Sat, 6 Mar 2021 05:01:44 +0900 Hiroo Ono (小野寛生) wrote: > 小野寛生です。 > > 結論から言うと、残念ですが FreeBSD では実用上無理です。 > > 2021年3月5日(金) 23:51 WATANABE Takeo : > > > > 渡部と申します。 > > > > フレッツ光クロスを契約して, > > JPNlE社の「v6プラス 固定IPサービス」に対応したISP(*1)と契約して, > > FreeBSDを用いて,v4 over v6 IPoE接続によるインターネット接続を試みています。 > > > > (*1) https://www.jpne.co.jp/service/v6plus-static/ > > > > かなりネットの海を泳いだのですが,これと言った先行事例の記事が見つからず, > > 挫折しています。ただ, > > > > https://people.allbsd.org/~hrs/FreeBSD/sato-FBSDW20170825.pdf > > > > では,「gifトンネルでは大丈夫」(p.15)との記載があり,できるものだと信じていあす。 > > その資料には同じく「MAP-E には非対応」とあるかと思いますが、V6プラスで提供されているのは > MAP-E 方式です。 > 参考: https://www.slideshare.net/yuyarin/i-pv4-ipv6coexistance > > https://bokut.in/note/2020/03/ > によれば、pf を使えば*一応*動くところまで設定可能なようですが、実用にはならないようです。 > NetBSD や OpenBSD ではどうなのかは分かりません。 > > 対応策としては、 > (1) MAP-E 方式に対応しているルーターか Linux を用いて設定する > (2) IPoE 方式を取っている ISP に乗り換える > (3) MAP-E方式に対応するよう、FreeBSD の NAT 周りに手を入れる > > のどれかかなと思います。 > > > ところが,私はトンネルを張った接続を行ったことがなく, > > 何をどのようにしたらよいのか分かりません。 > > > > 「教えて君」になってしまい申し訳ありませんが, > > どなたか教えて頂けませんでしょうか。 > > > > ●ISPからもらっている情報。 > > > > 1. IPv6プレフィックス : aaaa : bbbb :cccc : dddd : eeee : ffff : gggg : hhhh / 56 > > 2. IPv4アドレス : 192. 168. 100. 119 / 32 > > 3. インターフェースID : iiiii : jjjjj : kkkk : llll > > 4. Border Relay アドレス : mmmm : nnnn : oooo : pp :: 65 > > > > > > ●うちのネットワーク環境は下記のとおりです。 > > > > +------------------+ > > 192.168.131.64/27 ------| FreeBSD Router|-----ONU----NGN網----VNE(JPNE)----The Net > > LAN1( .65 )---------LAN2(なし) > > > > > > ●ヤマハさんの設定事例集 > > http://www.rtpro.yamaha.co.jp/RT/docs/ipip/index.html#setting11 > > > > から, > > > > LAN1のアドレスは「192.168.131.65」かつ, > > 「RAプロキシで取得したプレフィックス) : (インターフェイスID) / 64」になるようです。 > > > > # うちの回線はひかり電話未契約です。 > > > > どのようにネットワークの設定(とくに,IPIPトンネル(gif)を張ればよいか, > > どうかご教示願います。 > > > > 宜しくお願い致します。 > > > > --- > > 渡部 岳郎(WATANABE, Takeo) / JA1CPJ > > take@kasaneiro.jp > > _______________________________________________ > > freebsd-users-jp@freebsd.org mailing list > > https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp > > To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe@freebsd.org" > _______________________________________________ > freebsd-users-jp@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp > To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe@freebsd.org"