GeekFactory

int128.hatenablog.com

VyOSでIP masqueradeの最小構成

VyOSで最小限のルータを設定する時のメモです。

前提

設定

GLOBAL側とINTERNAL側のインタフェースを設定します。

set interfaces ethernet eth0 description GLOBAL
set interfaces ethernet eth0 address x.x.x.x/x

set interfaces ethernet eth0 description INTERNAL
set interfaces ethernet eth0 address 192.168.0.1/24

デフォルトゲートウエイを設定します。

set protocols static route 0.0.0.0/0 next-hop x.x.x.x

INTERNAL側からGLOBAL側へのIP Masqueradeを設定します。

set nat source rule 100 outbound-interface eth0
set nat source rule 100 source address 192.168.0.0/24
set nat source rule 100 translation address masquerade

INTERNAL側のDHCPサーバを設定します。

set service dhcp-server disabled false 
set service dhcp-server shared-network-name INTERNAL subnet 192.168.0.0/24
set service dhcp-server shared-network-name INTERNAL subnet 192.168.0.0/24 default-router 192.168.0.1
set service dhcp-server shared-network-name INTERNAL subnet 192.168.0.0/24 start 192.168.0.100 stop 192.168.0.200
set service dhcp-server shared-network-name INTERNAL subnet 192.168.0.0/24 dns-server x.x.x.x

GLOBAL側からINTERNAL側へのPort Forwardingを設定します。

set nat destination rule 1 destination address x.x.x.x
set nat destination rule 1 destination port 3389
set nat destination rule 1 inbound-interface eth0
set nat destination rule 1 protocol tcp
set nat destination rule 1 translation address 192.168.0.100

参考資料

Gradle SSH Plugin 2.3.0をリリースした

Gradle SSH Plugin 2.3.0、Groovy SSH 2.3.0をリリースしました。

github.com

2.3.0の変更点

リモートコマンドを実行する時にコマンドラインを簡単にエスケープする構文を追加しました。これまでは自分でエスケープする(シングルクォートで囲む、もしくはバックスラッシュを付ける)必要がありましたが、2.3.0からは execute メソッドにリストが渡された場合は自動的にエスケープされて実行されます。

例えば、以下のようにLLのスクリプトワンライナーで実行したい場合は便利でしょう。

execute(['perl', '-e', /print 'current: ', time, "\n"/])

また、2.3.0から複数の known_hosts ファイルを指定できるようになりました。地味な改善ですが、実行時に別の known_hosts をマージしたい場合などに役に立つと思います。

おまけ

5月中旬に入ってからダウンロード数が伸びています。2.0.0をリリースしてからだいぶ伸びているので、メジャーバージョンアップは効果があるということでしょうか。

ちなみに、Gradleで一度キャッシュされたら再びダウンロードされることはないので、新規ユーザがプラグインを使い始めたか、既存ユーザがバージョンを上げた場合にカウントされます。

f:id:int128:20160610213231p:plain

Gradle SSH Plugin 2.2.0をリリースした

Gradle SSH Plugin/Groovy SSH 2.2.0をリリースしました。

2.2.0の変更点

authentications でユーザ認証方式を指定できるようになりました。通常の使い方(パスワード認証、公開鍵認証)ではユーザ認証方式を指定する必要はありませんが、Kerberos認証などの特殊な認証方式を利用する場合は自分で指定します。

Stanford University LibrariesのJohnathan Martin氏から提案をいただいた機能追加なのですが、残念ながらKerberos認証は動作しなかったようです。JSchでKerberos認証をざっと調べてみましたが、ほとんど事例がないみたいです。

github.com

あと、 ssh.version でバージョン情報を取得できるようにしました。バージョン情報にはJSchやGroovyなどのバージョンも含まれます。Issueのやり取りでバージョンを教えてくれということが多いので、簡単に調べられるように改善しました。

おまけ

Gradle - How do I get my plugin into the portal? で説明されている新方式でプラグインをpublishしたいのですが、Bintrayを使う旧方式ですでに公開済みの場合はコンフリクトしてしまうようです。Plugins PortalのマイページからReclaimできないので1週間ほど前に問合せしてみましたが回答なし。ちゃんと届いてないのかな。