@ledsun blog

無味の味は佳境に入らざればすなわち知れず

ratにファーストチャレンジ

プログラミング言語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#L612open('/dev/net/tun', 'r+')で失敗します。 いまWSL上のUbuntuで試しています。 TUNというLinuxの機能?が有効になってないのでしょうか?

ちがいますね。エラーが起きているのは https://github.com/kazuho/rat/blob/3efd4d47aa0e2eb44768d285a618b18d1c26fd8c/tun.rb#L615@tundev.ioctl(TUNSETIFF, ifreq)でした。 TUNは開けていているが変更の権限がない辺りでしょうか?