プログラミング言語Ruby30周年記念イベント を軽い気持ちで見ていました。 奥一穂さんの発表がめちゃすごかったです。
さっそくGitHub - kazuho/rat: NAT written in pure rubyを読んでみます。
https://github.com/kazuho/rat/blob/3efd4d47aa0e2eb44768d285a618b18d1c26fd8c/rat.rb#L93-L96
# start IRB on the main thread spawn_thread(true) do IRB.start(__FILE__) end
rat.rbの最後にirbを起動しているぽいコードがありました。 実行してみましょう。
ledsun@MSI:~/rat►ruby rat.rb <internal:/home/ledsun/.rbenv/versions/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:88:in `require': cannot load such file -- rackup (LoadError) from <internal:/home/ledsun/.rbenv/versions/3.2.1/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:88:in `require' from rat.rb:5:in `<main>'
rackup
gemが必要そうです。
gem install rackup
してから再チャレンジします。
ledsun@MSI:~/rat►ruby rat.rb /home/ledsun/rat/tun.rb:615:in `ioctl': Operation not permitted @ finish_narg - /dev/net/tun (Errno::EPERM) from /home/ledsun/rat/tun.rb:615:in `initialize' from rat.rb:61:in `new' from rat.rb:61:in `<main>'
https://github.com/kazuho/rat/blob/3efd4d47aa0e2eb44768d285a618b18d1c26fd8c/tun.rb#L612
のopen('/dev/net/tun', 'r+')
で失敗します。
いまWSL上のUbuntuで試しています。
TUNというLinuxの機能?が有効になってないのでしょうか?
ちがいますね。エラーが起きているのは
https://github.com/kazuho/rat/blob/3efd4d47aa0e2eb44768d285a618b18d1c26fd8c/tun.rb#L615
の@tundev.ioctl(TUNSETIFF, ifreq)
でした。
TUNは開けていているが変更の権限がない辺りでしょうか?